-- Haskell function to append two lists app [] bs = bs app (a:as) bs = a:res where res = app as bs % Prolog function to append two lists app( [], Bs, Bs ). app( [A|As], Bs, [A|Res] ) :- app( As, Bs, Res ). -- Haskell function to reverse a list rev lst = revAcc lst revAcc [] rs = rs revAcc (a:as) rs = revAcc as (a:rs) % Prolog function to reverse a list rev( Lst, Res ) :- revAcc( Lst, [], Res ). revAcc( [], Bs, Bs ). revAcc( [A|As], Rs, Res ) :- revAcc( As, [A|Rs], Res ).