I would like to announce a small library hswip. It is an analogue of pyswip [1] python library in haskell.

Hswip allows to embed swi-prolog [2] interpreter into your haskell applications in a convenient way.

Let't look at an example:
    main = do
      prologInit ["-q","-nosignals"]
      prologCall "asserta(a(b,c))."
      prologCall "asserta(parent(pam, bob))."
      prologCall "asserta(parent(tom, bob))."
      prologCall "asserta(parent(tom, liz))."
      prologCall "asserta(parent(bob, ann))."
      prologCall "asserta(parent(bob, pat))."
      prologCall "asserta(parent(pat, jim))."
      res <- prologCall "parent(X,Y)."
      print res

    Output:
    [[("X","pat"),("Y","jim")],[("X","bob"),("Y","pat")],[("X","bob"),("Y","ann")],[("X","tom"),("Y","liz")],[("X","tom"),("Y","bob")],[("X","pam"),("Y","bob")]]

The library still has alpha quality and there are many things missing including exception handling and BSD license.

Any feedback is welcome!

-Evgeny Tarasov

[1] http://code.google.com/p/pyswip/
[2] http://www.swi-prolog.org/
[3] http://hackage.haskell.org/package/hswip-0.3