-- Programmed by Jedidiah Barber -- Licensed under the Sunset License v1.0 -- See license.txt for further details package body Kompsos.Prelude is function Head (This : in World; Full_List, Head_Term : in Term'Class) return World is begin return Result : World := This do Result.Unify (T (Head_Term & T (Result.Fresh)), Full_List); end return; end Head; procedure Head (This : in out World; Full_List, Head_Term : in Term'Class) is begin This := Head (This, Full_List, Head_Term); end Head; function Tail (This : in World; Full_List, Tail_Term : in Term'Class) return World is begin return Result : World := This do Result.Unify (T (T (Result.Fresh) & Tail_Term), Full_List); end return; end Tail; procedure Tail (This : in out World; Full_List, Tail_Term : in Term'Class) is begin This := Tail (This, Full_List, Tail_Term); end Tail; function Cons (This : in World; Head_Term, Tail_Term, Full_List : in Term'Class) return World is begin return Result : World := This do Result.Unify (T (Head_Term & Tail_Term), Full_List); end return; end Cons; procedure Cons (This : in out World; Head_Term, Tail_Term, Full_List : in Term'Class) is begin This := Cons (This, Head_Term, Tail_Term, Full_List); end Cons; function Nil (This : in World; Nil_Term : in Term'Class) return World is begin return Result : World := This do Result.Unify (Null_Term, Nil_Term); end return; end Nil; procedure Nil (This : in out World; Nil_Term : in Term'Class) is begin This := Nil (This, Nil_Term); end Nil; function Pair (This : in World; Pair_Term : in Term'Class) return World is begin return Result : World := This do Result.Unify (T (T (Result.Fresh), T (Result.Fresh)), Pair_Term); end return; end Pair; procedure Pair (This : in out World; Pair_Term : in Term'Class) is begin This := Pair (This, Pair_Term); end Pair; end Kompsos.Prelude;