core-logic

2018-10-29T01:57:25.029100Z

I’m somewhat surprised by how different the syntax is between core.logic and what’s in the reasoned schemer, it’s taking me a while to find the exact matching functions. For example, I spent a while I thinking that conj2 was conjo right up until this happened:

(l/run* [q]
  (l/conjo u# (l/== 'corn q)))
=> (_0)
eventually I worked out it was just:
(l/run* [q]
  (l/and* [u# (l/== 'corn q)]))
=> ()
But this stuff isn’t obvious and so far googling hasn’t shown that those two functions match. (Assuming that I’m right about that…)

2018-10-29T01:58:21.029900Z

I’m recording all the gotcha’s that I’m finding, but not really sure if it’s really of interest seeing as it’s not really been written anywhere…