PrologΒΆ
Shen has a Prolog notation consistent with the rest of Shen which uses defprolog. Here are the member, reverse and append functions in Shen Prolog.
(48-) (defprolog member
X [X | _] <--;
X [_ | Y] <-- (member X Y);)
member
(49-)(defprolog rev
[] [] <--;
[X | Y] Z <-- (rev Y W) (conc W [X] Z);)
rev
(50-)(defprolog conc
[] X X <--;
[X | Y] Z [X | W] <-- (conc Y Z W);)
conc
(51-) (prolog? (member 1 [1 2]))
true
(52-) (prolog? (member 0 [1 2]))
false
(53-) (prolog? (member X [1 2]))
true
(54-) (prolog? (member X [1 2]) (return X))
1
(55-) (prolog? (rev [1 2] X) (return X))
[2 1]
Further Reading
