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…