Not really. Many of the examples out there outdated, and few of them are written by people who have a strong understanding of core.logic. I don’t see much new being written, since for the most part core.logic has been abandoned. Being a core.* project with JIRA and the whole clojure process behind it means it’s unlikely that it will get significant contributions
@swizzard I am currently learning it too, maybe we can discover stuff together ;) defne, as I understood it, is just a short form for defn + matche
@norman why has it been abandoned? is there a better alternative?
Nope
You could consider it basically done
ok
Although there’s lots more that could be done if anyone cared
I think the bigger problem is that it’s a technology without much of a clear use.
At one point I considered possibly writing a core.logic book
So then I went out trying to find other people using core.logic in real applications
And I really couldn’t find anyone besides us using
hm
Maybe more people would use it if they understood it
🙂
ha, perhaps
As you’ve discovered, the reasoned schemer approach to learning core.logic isn’t great
at one point rackspace's managed security was using or planning on using core.logic, but I haven't seen them asking about it in a while so they may have changed it up
I can't imagine any of the clojure teams I've worked with letting something written in core.logic through code review. The first comment would be "this would be clearer if you used map / filter / etc"
We use core.logic because it’s the cleanest/clearest way to write complex queries.
The abstraction you can get is really great
We have non-clojurists writing core.logic queries and they don’t even know it
sure
But we’ve worked really hard to give them good abstractions
the initial introduction of core.logic is a tough hill to climb
because at the beginning what you are doing isn't so complicated, so it seems like you could just do it with map and filter and whatever, and it would be easier for people to follow
I mean, 95% of what we are using it for could honestly be done with datalog
except the queries would be brutal
the seq library is some kind of local maxima, and it takes a bunch of energy to get to something else
I don't think a lot of teams can do it (as I've said none of the teams I've been on seemed to want to spend energy in that way)
which is a shame (for core.logic and other things)
I’d like to think there are good use cases for core.logic besides ours…
sorry, I think I am not being clear, I 100% think core.logic is a better for a lot of cases
but it doesn't get used because programmers aren't willing to expend extra energy to escape the local maxima(the seq library) to get to something better
I don’t know clojure developers like that.
But if I can’t tell them practical things they can do with core.logic, I can’t criticize them much for not using it
I want to use it to write a type checker, maybe you can help? I saw the basic type checker example, and I am wondering how I can get type errors from my program instead of ()
use conde
the type terms unify or add this error to a list of error messages
(I guess you'd want conda instead maybe)
Ok, that goes in the direction what I thought too, gonna try that
I read that conda is a non relational goal, what does that imply?
I haven't used conda much, but if I recall it is committed choice
with conde all the arms are tried in "parallel", but conda only the first arm with the first goal that succeeds will be tried
which would make sense here, I think, if the type terms unify you don't care about building up a list of errors
Right, also confirms my expectations, was just worried it might have a performance impact or something
Is there still a plan to completely port it to clojurescript?