6 ms·
This was how I learned Haskell. I rather liked it. That said, looking back, I'm not sure it encourages the best coding style or the best idioms. It's perfect f
by tikhonj 14y ago
This was how I learned Haskell. I rather liked it.
That said, looking back, I'm not sure it encourages the best coding style or the best idioms. It's perfect for getting your head around the paradigm though!
I'm currently writing an analogous tutorial for implementing Prolog in Haskell, but it's on a bit of a hiatus thanks to some school and research related deadlines coming up. Hopefully people are interested in something like that :).
Interestingly enough, the Prolog interpreter is actually shorter than the simple Scheme one--largely because we can take advantage of the list monad for the backtracking. I think it's still a very cool exercise.
- X6MW3aQrZU5VKkz 14y agoI would be very interested in seeing a tutorial detailing how to implement Prolog in Haskell!
- exDM69 14y agoNot really a tutorial and not really Prolog, but here's an interpreter for a logic programming language written in Haskell: https://github.com/rikusalminen/slolog https://github.com/rikusalminen/slolog I wrote it as a project work in an Artificial Intelligence class. It very closely resembles the logic programming language implemented in "Structure and Interpretation of Computer Programs". I'm sorry there isn't any documentation for it. Here's a little example of what it looks like, from examples/royalfamily.slo: (siblings ?x ?y) <- (parent ?x ?parent) & (parent ?y ?parent) (grandparent ?x ?y) <- (parent ?x ?z) & (parent ?z ?y) (cousins ?x ?y) <- (grandparent ?x ?gp) & (grandparent ?y ?gp) & !(siblings ?x ?y)
- chadzawistowski 14y agoThat sounds awesome! I'd be very interested in that prolog interpreter tutorial.