
Derek Elkins writes:
Jonathan Cast wrote:
I find the only similarity between Haskell and Prolog to be that neither is imperative.
Indeed, you've discovered it. The definition of "declarative" is often "not imperative."
I disagree. Practically. (I won't discuss doctrinal matter nor linguistic hairsplitting). The relational syntax of Prolog is more "universal" than the functional notation, since you have logic variables and logical-non-determinism, and - thus - the possibility of making predicates where the roles of input and output parameters are not pre-assigned, - - but there is a *strong* (meaning important) functional layer within, and plenty of Prolog algorithms are expressed similarly in Lisp or in Haskell. Many non-deterministic ones have natural translation into the List monad. Some "circular" definitions using laziness are related to ones with non-instantiated logical variables. If you don't want to see similarities, you won't. But I assure you that I have profited enormously from tha *affinities* between functional and logic approaches, and you won't convince me that "declarative" is without substance. Jerzy Karczmarczuk