CLP dialect :ISO PrologGNU PrologSicstus PrologOther (file)
Program to type check (below or local file) concat([1],[],[1]). concat([],X,X). concat([X|L],L2,[X|R]) :- concat(L,L2,R).
Optional type declarations (below or local file) :- typeof concat(list(A),list(A),list(A)) is pred.