From c9e156fdc3449d1cbc9dac4176cc460f6462ef18 Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Wed, 12 Nov 2025 20:34:24 +1300 Subject: Prelude now derives its own World so dot notation works for those subprograms --- src/kompsos-prelude.adb | 104 ++++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 52 deletions(-) (limited to 'src/kompsos-prelude.adb') diff --git a/src/kompsos-prelude.adb b/src/kompsos-prelude.adb index 58b80f4..89cc100 100644 --- a/src/kompsos-prelude.adb +++ b/src/kompsos-prelude.adb @@ -15,7 +15,7 @@ package body Kompsos.Prelude is return World is begin return Result : World := This do - Result.Unify (T (Term (Head_Term), T (Result.Fresh)), Full_List); + Result.Unify (T (Head_Term, Result.Fresh), Full_List); end return; end Head; @@ -24,7 +24,7 @@ package body Kompsos.Prelude is (This : in out World; Full_List, Head_Term : in Term'Class) is begin - This := Head (This, Full_List, Head_Term); + This := This.Head (Full_List, Head_Term); end Head; @@ -36,7 +36,7 @@ package body Kompsos.Prelude is return World is begin return Result : World := This do - Result.Unify (T (T (Result.Fresh), Term (Tail_Term)), Full_List); + Result.Unify (T (Result.Fresh, Tail_Term), Full_List); end return; end Tail; @@ -45,7 +45,7 @@ package body Kompsos.Prelude is (This : in out World; Full_List, Tail_Term : in Term'Class) is begin - This := Tail (This, Full_List, Tail_Term); + This := This.Tail (Full_List, Tail_Term); end Tail; @@ -57,7 +57,7 @@ package body Kompsos.Prelude is return World is begin return Result : World := This do - Result.Unify (T (Term (Head_Term), Term (Tail_Term)), Full_List); + Result.Unify (T (Head_Term, Tail_Term), Full_List); end return; end Cons; @@ -66,7 +66,7 @@ package body Kompsos.Prelude is (This : in out World; Head_Term, Tail_Term, Full_List : in Term'Class) is begin - This := Cons (This, Head_Term, Tail_Term, Full_List); + This := This.Cons (Head_Term, Tail_Term, Full_List); end Cons; @@ -87,7 +87,7 @@ package body Kompsos.Prelude is (This : in out World; Nil_Term : in Term'Class) is begin - This := Nil (This, Nil_Term); + This := This.Nil (Nil_Term); end Nil; @@ -99,7 +99,7 @@ package body Kompsos.Prelude is return World is begin return Result : World := This do - Cons (Result, T (Result.Fresh), T (Result.Fresh), Pair_Term); + Result.Cons (Result.Fresh, Result.Fresh, Pair_Term); end return; end Pair; @@ -108,7 +108,7 @@ package body Kompsos.Prelude is (This : in out World; Pair_Term : in Term'Class) is begin - This := Pair (This, Pair_Term); + This := This.Pair (Pair_Term); end Pair; @@ -119,18 +119,18 @@ package body Kompsos.Prelude is List_Term : in Term'Class) return World is - Result_Nil, Result_Pair : World := This; - Ref_Term : constant Term := T (Result_Pair.Fresh); + One, Two : World := This; + Ref_Term : constant Term := Two.Fresh; begin - Nil (Result_Nil, List_Term); + One.Nil (List_Term); - Pair (Result_Pair, List_Term); - Tail (Result_Pair, List_Term, Ref_Term); - if not Result_Pair.Failed then - Linked_List (Result_Pair, Ref_Term); + Two.Pair (List_Term); + Two.Tail (List_Term, Ref_Term); + if not Two.Failed then + Two.Linked_List (Ref_Term); end if; - return Disjunct (Result_Nil, Result_Pair); + return Disjunct (One, Two); end Linked_List; @@ -138,7 +138,7 @@ package body Kompsos.Prelude is (This : in out World; List_Term : in Term'Class) is begin - This := Linked_List (This, List_Term); + This := This.Linked_List (List_Term); end Linked_List; @@ -149,17 +149,17 @@ package body Kompsos.Prelude is Item_Term, List_Term : in Term'Class) return World is - Result_Head, Result_Rest : World := This; - Ref_Term : constant Term := T (Result_Rest.Fresh); + One, Two : World := This; + Ref_Term : constant Term := Two.Fresh; begin - Head (Result_Head, List_Term, Item_Term); + One.Head (List_Term, Item_Term); - Tail (Result_Rest, List_Term, Ref_Term); - if not Result_Rest.Failed then - Member (Result_Rest, Item_Term, Ref_Term); + Two.Tail (List_Term, Ref_Term); + if not Two.Failed then + Two.Member (Item_Term, Ref_Term); end if; - return Disjunct (Result_Head, Result_Rest); + return Disjunct (One, Two); end Member; @@ -167,7 +167,7 @@ package body Kompsos.Prelude is (This : in out World; Item_Term, List_Term : in Term'Class) is begin - This := Member (This, Item_Term, List_Term); + This := This.Member (Item_Term, List_Term); end Member; @@ -178,23 +178,23 @@ package body Kompsos.Prelude is Item_Term, List_Term, Out_Term : in Term'Class) return World is - Result_Head, Result_Rest : World := This; - Left : constant Term := T (Result_Rest.Fresh); - Right : constant Term := T (Result_Rest.Fresh); - Rest : constant Term := T (Result_Rest.Fresh); + One, Two : World := This; + Left : constant Term := Two.Fresh; + Right : constant Term := Two.Fresh; + Rest : constant Term := Two.Fresh; begin - Head (Result_Head, List_Term, Item_Term); - Tail (Result_Head, List_Term, Out_Term); + One.Head (List_Term, Item_Term); + One.Tail (List_Term, Out_Term); -- infinite loops if run in reverse with vars for item and list -- probably needs lazy conjunction to work properly - Cons (Result_Rest, Left, Right, List_Term); - if not Result_Rest.Failed then - Remove (Result_Rest, Item_Term, Right, Rest); - Cons (Result_Rest, Left, Rest, Out_Term); + Two.Cons (Left, Right, List_Term); + if not Two.Failed then + Two.Remove (Item_Term, Right, Rest); + Two.Cons (Left, Rest, Out_Term); end if; - return Disjunct (Result_Head, Result_Rest); + return Disjunct (One, Two); end Remove; @@ -202,7 +202,7 @@ package body Kompsos.Prelude is (This : in out World; Item_Term, List_Term, Out_Term : in Term'Class) is begin - This := Remove (This, Item_Term, List_Term, Out_Term); + This := This.Remove (Item_Term, List_Term, Out_Term); end Remove; @@ -213,21 +213,21 @@ package body Kompsos.Prelude is List_Term, Item_Term, Out_Term : in Term'Class) return World is - Result_Nil, Result_Rest : World := This; - Left : constant Term := T (Result_Rest.Fresh); - Right : constant Term := T (Result_Rest.Fresh); - Rest : constant Term := T (Result_Rest.Fresh); - begin - Nil (Result_Nil, List_Term); - Unify (Result_Nil, Item_Term, Out_Term); - - Cons (Result_Rest, Left, Right, List_Term); - Cons (Result_Rest, Left, Rest, Out_Term); - if not Result_Rest.Failed then - Append (Result_Rest, Right, Item_Term, Rest); + One, Two : World := This; + Left : constant Term := Two.Fresh; + Right : constant Term := Two.Fresh; + Rest : constant Term := Two.Fresh; + begin + One.Nil (List_Term); + One.Unify (Item_Term, Out_Term); + + Two.Cons (Left, Right, List_Term); + Two.Cons (Left, Rest, Out_Term); + if not Two.Failed then + Two.Append (Right, Item_Term, Rest); end if; - return Disjunct (Result_Nil, Result_Rest); + return Disjunct (One, Two); end Append; @@ -235,7 +235,7 @@ package body Kompsos.Prelude is (This : in out World; List_Term, Item_Term, Out_Term : in Term'Class) is begin - This := Append (This, List_Term, Item_Term, Out_Term); + This := This.Append (List_Term, Item_Term, Out_Term); end Append; -- cgit