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…)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…