> I'd guess the smart move would be to port Qi to ABCL - a version of
> Common Lisp that runs on the JVM. This would be much easier than a
> port to Clojure.
My feeling was that it would mean a lot more to port Qi to Clojure
since Clojure fits really well in Java-as-a-Platform; if Qi was to
inherit more interop capabilities thanks to a port to Clojure instead
of ABCL, it would help it spread much more, especially since CL is
mainstream-dead while Clojure is mainstream-interesting. Therefore,
if it's possible, such a port would be worth the supplemental efforts.
Now, I can't yet compare ABCL's and Clojure's interop with Java.
I don't know if whatever missing interop features could be added
straight from Qi, independently of the quality of the lisp
implementation on top of which it's ported.
I don't know either how much programming in Qi encourages us to ignore
the underlying platform or not. I assumed that we are encouraged to
interact a lot with the underlying platform(s), and therefore thought
it would be really interesting and empowering to be able to interact
with a lisp that is itself well integrated into Java-as-a-Platform,
and that also brings very elegant unified data structures to the
table. But if a port of Qi to Clojure means we don't care anymore
about Clojure as long as it provides Java-interop access to Qi, then I
suppose a port to ABCL would make much more sense, and then again, why
not go straight to the most minimal possible lispy implementation so
that we don't have a whole unused CL platform between Qi and that of
Java.
Finally, I'm not even sure if it would be really useful to bring Qi to
the Java Platform; this hope of mine is based solely on the assumption
that if ABCL, SISC, KAWA and Clojure are doing it, it must be for more
than "just" using the JVM for platform portability.
All this having been said, my concern is that we invest our energies
in the Most Meaningful Solution. And if this MMS implies porting to
something different than a CL, then I believe we must be willing to
spend the efforts now, rather than regretting later we didn't do it
now, and then dividing the community by starting anew on top of
something else.
Now, who am I to devise such plans for the future of Qi? I think I
should get back to my books and, eventually, to a REPL or two. Before
I do that, though, I wanted to ask you something. I don't know why I
didn't before, but it's only today that I read for the first time John
Backus' 1978 paper. I had never read a more convincing rebuttal of
imperative programming (I'm yet to read Turner 1982). And on page
624, we can read:
"One advantage of this algebra over other proof techniques is that the
programmer can use his programming language as the language for
deriving proofs, rather than having to state proofs in a separate
logical system that merely talks about his programs."
Although Qi, in my understanding, doesn't make use of Backus' FP
System's algebra, am I going too far when I believe that Qi achieves
the feat of reconciling the programming language with proofs of the
same language in a unifying way?
Also, on the same page:
"Our goal is to develop a foundation for the algebra of programs that
disposes of the theoretical issues, so that a programmer can use
simple algebraic laws and one or two theorems from the foundations to
solve problems and create proofs in the same mechanical style we use
to solve high-school algebra problems, and so that he can do so
without knowing anything about least fixed points or predicate
transformers."
Again, am I going too far in believing that Qi marks another big point
here, although it doesn't seem to make use of the said algebra?
In any case, this paper has been highly enlightening to me and I feel
it's bad how I can't seem to find how Backus's Function-Level thinking
got incorporated in modern Functional Languages. Was Backus the only
proponent and consumer of his ideas? It looks like the latter all
preferred to continue building their core on top of Church or Curry
foundations (of which I'm no critique). Concurrently, in my current
understanding, the US went along Church with their Lisps and Schemes,
while the UK went along Curry with their MLs.