update of Monad (with functions, and changed Traverse)
prologTerm now use Symbols rather than strings