In the reasoned Schemer and core logic primer succeed and fail are called constants, whereas the source code defines them as functions. I'm confused.
They are goals that don't depend on any passed in values, so constant in that sense
@nick.romer all goals are functions iirc
You just use them as if they were constants at the minikanren/core.logic language level; but underneath they’re implemented as functions.
internally core logic will apply values to them as with any other goal. They’ll just always succeed or fail.
I see. Thank you both!