
DotLisp – A Lisp dialect for .Net - cichli
http://dotlisp.sourceforge.net/dotlisp.htm
======
_halgari
Few people know that Clojure was not the first lisp worked on by Rich Hickey
(I think Clojure was the 5th?). This was the last one he wrote before he
started work on Clojure.

~~~
thomasvarney723
What were the other 3?

~~~
_halgari
You know, I forget now. It was a trivia question at Clojure/Conj 2012.

~~~
cemerick
"Only" two others, AFAIK, Jfli and FOIL:

[http://jfli.sourceforge.net/](http://jfli.sourceforge.net/)
[http://foil.sourceforge.net/](http://foil.sourceforge.net/)

Both were (are? I can imagine people are still using them, Jfli in particular)
interop libraries, not languages. FOIL is basically an RPC mechanism between a
Common Lisp process and a JVM or CLR "host". JFli makes it reasonably easy to
embed a JVM within a Common Lisp process, and thereby create Java objects from
CL, call methods, and provide callbacks to Java methods written in CL.

(That's all IIRC, it's been a long time.)

I remember using JFli briefly during my later CL experimentation. Its model is
very similar to jpype, which provides similar functionality for python, which
was at the time my first committed step away from Java as my primary
(production) language.

The prize was a sweet nylon set-up-anywhere hammock, BTW. I think Stuart was
mildly irked that mine was the only hand that was up, but I thought the
hammock looked neat. :-)

------
kazagistar
> I'm not a Lisp expert. Helpful suggestions are always welcome.

> ©2003 Rich Hickey, All Rights Reserved

I was amused.

~~~
Tomasoo
How things change.

Rich Hickey is a genius. A nice man. A practical man. A modest man. A role
model for our industry.

~~~
Guthur
Genius is a little strong in my opinion. Still an intelligent and talent man
I'm sure.

In my opinion he has made some questionable decisions with Clojure.

\- Gratuitous use of [] in some forms; mainly defn and let. Why break the
homonicity so often for no real benefit?

\- Comment strings appearing before argument lists in functions. I would like
to see the entire protocol, name and args, before reading the docstring which
may refer to the args.

\- List? predicate... (list? '(1)) => true (list? '(1 2)) => false ...

\- Multi arity functon, the main justification in the documentation is due to
JVM limitations, JVM limitations like these can be hidden by the hidden by the
guest language [http://clojure-
doc.org/articles/language/functions.html#mult...](http://clojure-
doc.org/articles/language/functions.html#multi-arity-functions)

These are just my superficial opinions of Clojure, I am still very much at the
beginning of my journey in learning the language.

~~~
andrewchambers
"\- Gratuitous use of [] in some forms; mainly defn and let. Why break the
homonicity so often for no real benefit?"

[] is an array data type, () is a list. Code and data are still the same.

~~~
newuser88273
Clojure code is surprisingly hard to edit for a Lisp-like language. The
gratuitous use of square brackets where a Lisp would just use parentheses is
part of that.

Omitting the parentheses inside those square brackets, however, was an even
worse decision wrt editability. When you can't edit a sequence of
syntactically homogenous items by simple s-expression manipulations, your
Lisp's design is defective.

------
platz
> It is substantially more sophisticated than DotLisp and I strongly recommend
> it, unless you must target .Net.

> The idea behind DotLisp was to build a Lisp for .Net that yielded to the CLR
> those things provided by the CLR that languages normally have to provide
> themselves:

Is the author aware that Rich also implemented ClojureCLR?
[http://clojure.org/clojureclr](http://clojure.org/clojureclr)

I'm curious how DotLisp improves on the situation provided by clojureclr,
especially since "It is substantially more sophisticated than DotLisp".

It might be "sharing type system, GC and other runtime services etc., with
transparent access to .Net w/o a FFI or wrappers", I am note sure if
clojureclr requires wrappers whereas DotLisp doesn't, but I imagine it would
be similar to how Clojure proper integrates with the JVM.

~~~
Sanddancer
The author is Rich Hickey. This was a project of his before Clojure, and he
just never updated the page after Clojure became available for the CLR.

~~~
WalterGR
I was really surprised to read that

> ClojureCLR development closely tracks progress in the ClojureJVM project. We
> index many of our commits directly to commits in the Clojure repo, so it
> should be easy to track our progress. We try to be within a week or so of
> development milestones on the main Clojure project.
> [https://github.com/clojure/clojure-
> clr/wiki](https://github.com/clojure/clojure-clr/wiki)

I thought ClojureCLR had been abandoned after Rich Hickey started working on
ClojureJVM.

Bug tracker:
[http://dev.clojure.org/jira/browse/CLJCLR](http://dev.clojure.org/jira/browse/CLJCLR)

~~~
technomancy
> I thought ClojureCLR had been abandoned after Rich Hickey started working on
> ClojureJVM.

It actually was abandoned, and then someone else came along and picked it back
up.

------
grkovalev
where you will find developers to support project written by DotLisp in real
production, it's just for fun, not for anything else.

------
vittore
What about F# and Nemerle? Why you need another lisp?

Oh this article dates 2003, that is why.

~~~
bunderbunder
Nemerle and F# may be functional, but neither is a lisp. One big difference is
that this is a dynamic language, whereas F# and Nemerle are static.

