Hacker News new | ask | show | jobs
by Jtsummers 516 days ago
Yes, but not `iff`.

  f(X) :- g(X), h(X).
  f(a).
With those two statements, `f(a)` is true, but it does not mean that `g(a)` and `h(a)` are also true. Instead, it means that we happen to know some fact, `f(a)`, and some rule for cases beyond that fact. If it also happened that `g(a)` and `h(a)` are true then we'd have two ways of arriving at the fact of `f(a)` being true.

It's a reverse of the implication arrow and is meant to be read that way:

  f(X) :- g(X), h(X).
Is read as "f(X) if g(X) and h(X)", versus "if g(X) and h(X) then f(X)".
1 comments

Thanks for the correction :)