
LispKit: framework for Lisp-based extension/scripting languages for macOS apps - ingve
https://github.com/objecthub/swift-lispkit#swift-lispkit
======
realworldview
[https://en.m.wikipedia.org/wiki/Lispkit_Lisp](https://en.m.wikipedia.org/wiki/Lispkit_Lisp)

------
jdmoreira
It would be awesome if this had an FFI for calling Swift code.

------
bjoli
Has anyone here used guile from swift? How do the two projects compare?

------
rjsw
The purely functional nature of LispKit was always a turnoff for me.

~~~
bjoli
It is not purely functional. The main difference from r7rs scheme is that
lists are immutable, but that has been the idiomatic way in scheme anyway.

It even supports generalised set!.

~~~
amelius
Can you still put mutable cells (refs) inside these lists?

~~~
bjoli
I doubt that would be an issue. I think it has more to do about the
correctness of the list implementation. In r5rs you can mutate a list from
underneath your own feet, and ensuring a correct program state requires some
extra checks that may slow list operations down.

------
nickmain
Dupe:
[https://news.ycombinator.com/item?id=17017975](https://news.ycombinator.com/item?id=17017975)

------
fithisux
It is a pitty that it does not run under linux/windows. Gnustep does not seem
to help here (or wxSwift).

------
shawn
Somewhat tangential, but if you want to use Lisp with JS or Lua, you can use
Lumen: [https://github.com/sctb/lumen](https://github.com/sctb/lumen)

I only mention it because it pretty much runs everywhere, and macOS already
has a few JS and Lua-based extension mechanisms.

~~~
whitten
Shawn, Is your Lumen system compatible with COMMON-LISP (Lisp-2), or Scheme
(Lisp-1) ? If Lumen is a Lisp-1 then it does not allow the same name to be
used for a function and a variable simultaneously. If Lumen is a Lisp-2 then
functions and variables are in separate namespaces.

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.

~~~
shawn
The cool thing about Lumen is that it’s literally JavaScript: every lumen
expression compiles into equivalent JS (or Lua). There aren’t any special
calling conventions.

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. :)

------
M_Bakhtiari
Why is it called LispKit when there's no Lisp in it?

~~~
pavlov
”LispKit implements a core language based on the R7RS (small) Scheme
standard.”

Don’t you consider Scheme a Lisp?

~~~
pjmlp
Scheme is a Lisp like language, not a Lisp.

Parenthesis is probably the only thing they have in common.

~~~
tonyg
Your claim is revisionist and, in my view, nonsense. Scheme is most certainly
a Lisp. I mean, you can think what you like, and of course postmodernism is a
thing, "the author is dead" and so forth, but if you look at the history, it's
very, very clear that Scheme is a Lisp; that is, it is a member of the Lisp
language family.

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._

~~~
pjmlp
Ctrl+F "dialect" makes my point.

~~~
bjoli
CL is a lisp dialect as well. Just because it is the biggest doesn't make it
the only lisp entitled to be called a lisp

~~~
lispm
Why not call a Scheme a Scheme?

That would be natural since the language is a direct implementation of the
Scheme R7RS standard and not compatible with other Lisp dialects.

