:- initialization(main).

ab(A,B) :- someFunc(A,B).

cd(1,5).
cd('Some shit',4).
cd(_,_) :- throw(bad_mapping). % gprolog-специфично

ef(e(X,Y), [X,Y]).


someFunc(A,B) :- B is A * A.

main :-
    ab(5,B)          , show(B)

  , cd(C,4)          , show(C)
  , catch(cd(3,_), bad_mapping, show('bad mapping!')) 

  , ef(e(4,'two'), F), show(F)

  , halt
  .
show(X) :- write(X), nl.