Solving numberlink ( a.k.a flow ) in Haskell and Prolog