LispKit: framework for Lisp-based extension/scripting languages for macOS apps
github.com
github.com
It even supports generalised set!.
I did read the GitHub announcement but was just trying to make the point that re-using names of software packages isn't a good idea, thanks for providing an example.
I only mention it because it pretty much runs everywhere, and macOS already has a few JS and Lua-based extension mechanisms.
Perhaps someone knows if there a library of code that you can load to make all the common-lisp functions available to you? Would that make your system a common lisp?
Is there an equivalent library you can load to make Lumen a Scheme at some compatibility level?
Thanks for your info and sharing your work.
I would say Lumen is quite close to Scheme out of the box, but without syntax transformers. It wouldn't be hard to implement the missing parts of Scheme.
If you want to collaborate on some of this, shoot me an email. :)
Don’t you consider Scheme a Lisp?
Parenthesis is probably the only thing they have in common.
> Parenthesis is probably the only thing they have in common.
Besides separation of namespaces in a lisp-2 and full, native support for continuations in scheme, which differences do you see/consider relevant?
Scheme's closest equivalents are neat academic exercises, but I don't consider them complete macro systems.
And, honestly, the arguments that it doesn't matter presented on that page are pretty weak. 'It's a pointless distraction' is an assertion, not an argument. Scheme and Lisp are different; they have different philosophies and they solve the same problems in different ways; recognising those differences is recognising the facts; ignoring them is simply ignoring reality. 'The benefits of choice far outweigh the disadvantages of redundant/wasted development work on two incompatible platforms' is clearly, I believe, falsified by the experience of the last couple of decades. When I think of the work which went into Racket (originally a Scheme, but now its own thing) and Clojure, I think of how much better Lisp could have been if that effort had instead been spent on it (and aficionados of either of those languages could say the same thing about effort spent on the other, on Lisp & on other Lisp-like languages).
You can even read the words of the people who invented and developed the language:
"SCHEME is essentially a full-funarg LISP." - page 1, "Scheme, an interpreter for extended lambda calculus", Sussman and Steele, Dec 1975. AI memo #349.
"SCHEME is a dialect of LISP." - abstract, "The Revised Report on SCHEME, a Dialect of LISP", Steele and Sussman, Jan 1978. AI memo #452.
"Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language [...] Scheme differs from Common Lisp in its emphasis upon simplicity and function over compatibility with older dialects of Lisp." - page 4, "The Revised Revised Report on Scheme, or An UnCommon Lisp", Rees and Clinger (eds.), Aug 1985. AI memo #848.
"Scheme has influenced the evolution of Lisp. [...] Scheme was the first major dialect of Lisp to [do many things]" - introduction, "Revised^3 Report on the Algorithmic Language Scheme", Rees and Clinger (eds.), Dec 1986. ACM SIGPLAN Notices 21(12).
"Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language" - summary of the R4RS, the R5RS, the R6RS and even the bloody R7RS.
Compare and contrast to the opening words of the Introduction to CLtL2, which are "Common Lisp is a new dialect of Lisp, a successor to MacLisp, influenced strongly by Zetalisp and to some extent by Scheme and Interlisp."
If Scheme is "not a Lisp", then neither is Common Lisp.
That's not what's being argued, though.
That would be natural since the language is a direct implementation of the Scheme R7RS standard and not compatible with other Lisp dialects.
Scheme OTOH has its own code bases, its own libraries, its own standards, its own books, its own community.
It is a Lisp, but that has become more or less meaningless for practical work. Being 'a Lisp" means practically very little. It's just a name with an unclear definition and less and less practical value. Thus 'a Lisp' means mostly an unspecified bunch of dialects which are in practical terms mostly unrelated.
I prefer a stronger definition, where Lisp means those dialects and their implementation which actually share code, books, libraries, tools.
Otherwise people get the impression of some compatibility, which in real life isn't given.
It's like a family member, which used to carry your name, but now has left the house and has its own life.
Is Lispkit running Dylan code?
If Lispkit only runs the Scheme dialect of Lisp and basically implements the specific R7RS dialect of Scheme, why call it Lisp and not Scheme?