
UnConj - llambda
http://clojure.com/blog/2011/11/22/unconj.html
======
swannodette
Just wanted to communicate how amazing it was to have two of the authors of
The Reasoned Schemer (Dan Friedman, William Byrd) there this year. At the
first Clojure/conj I was opening up its pages for the very first time. To find
out that such a powerful computational model can be described in about ~200
lines of Scheme was a shocker. To find out that it is also efficient was just
unbelievable. I'd been doing Clojure for two years already I don't think it
really hit me what Lisp had to offer until I spent nearly 6 months
understanding those _mere 200 lines_ and reimplementing them in Clojure.

Having Dan and Will around to bounce ideas off at the Clojure/conj was simply
incredible. One thing I've disliked about the miniKanren system is that many
finite programs do not terminate depending on where the recursion occurs. Dan
& Will have been working on that problem for _8 years_.

Being the unprincipled fool that I am I decided to tackle this problem head
on. Over the past weekend I implemented a version of miniKanren that not only
terminates now for an incredible number of programs (it implements fair
conjunction), but it does so without sacrificing miniKanren's excellent
sequential performance when you so desire it.

So for me, yes modern programs should be written in Lisp. We don't even know
what modern programs should look like yet :)

~~~
dpritchett
So that's where core.logic came from? I just went and bought TRS so that I can
figure out where you're coming from with that.

~~~
swannodette
Yes core.logic is an implementation of miniKanren. Soon as Dan Friedman and
William Byrd confirm my approach to fair conjunction is solid, I plan on
integrating fairKanren to be followed by cKanren which will bring powerful
constraint solving facilities into Clojure.

~~~
cgrand-net
Do you mean fair conjunction like in "Backtracking, Interleaving, and
Terminating Monad Transformers" or something else/new?

~~~
swannodette
I don't think so though I'm not totally sure. That paper isn't really about
logic programming in general - no vars, no unification.

~~~
cgrand-net
I think you're right and I had the stupids the other day: what this paper
describes is simply your conde (né condi). No?

------
t-crayford
Super amused to see my work on clojure-refactoring mentioned there. I don't
work on that anymore (nor do I think clojure is the right language for me
these days).

~~~
llambda
Interesting. What language do you think is the right language, if I may be so
bold? :)

~~~
t-crayford
I think clojure is close in some regards, but running on the JVM really hurts
me these days (startup time _really_ hurts TDD as I do it). I also think
clojure has too much syntax (for a lisp), and am not convinced modern programs
should be written in lisp any more (though that's hazy).

At the moment I use Ruby, which is much less frustrating than clojure ever
was. (I seriously love the shit out of rspec).

Last but not least: stacktraces.

This isn't to say I think Ruby is better for all tasks etc, just that it fits
where I am right now. Clojure is probably better for people with differing
tastes to me.

~~~
pdelgallego
>> and am not convinced modern programs should be written in lisp any more
(though that's hazy).

Can you elaborate or recommend me some reading that support this point?

~~~
t-crayford
Like I said, I'm hazy on that point, and don't want to say anything further in
public right now.

------
spariev
Any chance of having recordings of these talks posted online?

~~~
nickik
They will be. Im sure that the will pop up on HN when the are out.

------
Cieplak
I'd really like to see a ClojureCLR Swank server for emacs/SLIME.

