Какая лучшая реализация схемы или LISP для OS X?

86

Я ищу версию Scheme или даже LISP, которую я могу использовать для восстановления некоторых утерянных навыков разработки Lisp. Некоторые веб-возможности были бы хороши, но не важны.

Я посмотрел на схему Plt и MIT, и, хотя обе выглядят довольно хорошо, Plt кажется более функциональным. Я также посмотрел на реализации Lisp, но все они кажутся довольно дорогими.

Я предпочитаю бесплатные / недорогие реализации, поскольку это действительно, вероятно, просто случайное хобби-программирование. Какие рекомендации вы бы дали?

Марк Бриттингем
источник
6
Обратите внимание, что схема PLT сменила название на Racket.
soegaard
сильно связанный вопрос: stackoverflow.com/questions/2485859
pnkfelix 07
2
Почему этот вопрос не закрыт, как и почти все подобные?
Эрик Каплун

Ответы:

71

Я бы пошел с Ракетом. Он может быть не таким быстрым, как SBCL, но у него есть отличные библиотеки и документация, а также интегрированная среда, которая поможет вам разрабатывать и запускать программы Scheme прямо из ворот. Что мне действительно нравится в IDE Racket, DrRacket, так это то, что вам не нужно делать - вам не нужно изучать Emacs, вам не нужно изучать SLIME, вам не нужно беспокоиться об охоте на третьих лиц. партийные библиотеки, так как практически все библиотеки, предназначенные для Racket, можно найти в пакетах . В общем, это действительно сокращает время обучения и позволяет вам сосредоточиться на реальной задаче: написании отличного кода.

Кроме того, он поставляется с веб-сервером, если вы хотите создавать веб-сайты на базе Racket (что я сейчас изучаю).

Кайл Кронин
источник
1
Несколько недель назад я выбрал PLT более или менее случайно, и пока я очень доволен своим выбором. Как вы сказали, много библиотек и документации, несколько полезных инструментов.
Slartibartfast
Спасибо никому. Я больше сосредоточен на инструментах и ​​документации, чем на скорости, поэтому я выбираю PLT.
Марк Бриттингем,
1
Конечно. DrScheme создан с учетом требований образования, у которого есть некоторые достоинства (простой в использовании и документированный), но также есть и недостатки; Если вы не используете HtDP ( htdp.org ), лучше не обращать внимания на языки обучения и использовать Module для всего.
Кайл Кронин,
В дополнении к в настоящее время под названием Ракетки, теперь есть новый пакет система и каталог пакета , который теперь предпочтительнее планеты для большинства случаев использования.
Джек
22

Я довольно много экспериментировал с этим.

Clozure Common Lisp (урожденный Open MCL), безусловно, самый быстрый; На 25-30 процентов быстрее, чем у следующего конкурента на моем Intel Mac Mini.

Схема MIT довольно хорошо работает на Mac. Думаю, в конце концов я сам скомпилировал его, но на этом сайте есть двоичные файлы. Схема PLT также хороша и, возможно, немного лучше интегрирована в мир Mac. (Схема PLT теперь известна как Racket , но я не экспериментировал с ней после изменения.)

Чарли Мартин
источник
2
почти все, с чем я пробовал; обычно это были тяжелые манипуляции со списками и интенсивное использование loopмакросов.
Чарли Мартин
1
Хотел бы отметить, что CCL, похоже, не работает на 32-битной Intel, поэтому мой Mac Mini для него немного устарел.
Дэвид Торнли,
16

Я большой поклонник Clojure, SBCL и Clozure CL. Все они фантастические, но они также излишни, если все, что вам нужно, - это освежить свои навыки Lisping. Все они требуют абсурдного количества поисков информации, поиска в списках рассылки, установки пакетов, скрытия irc и т. Д.

Dr Scheme просто устанавливается и запускается. Четыре с половиной года назад я закончил первые 3 главы SICP с помощью Dr Scheme. Нет ничего более глубокого, чем определение оценщика схемы как такового. Как только вы поймете, что у вас будет гораздо больше терпения для собратьев по промышленной силе.

dnolen
источник
3
На самом деле мне больше ничего не нужно для моей установки Ubuntu-SBCL-SLIME-stumpwm. Для начала, Практический Common Lisp и CLHS - это все, что вам нужно, и это принесет вам долгий путь.
Svante
15

Для Scheme отлично подходит DrRacket (включен в Racket ).

Для Common Lisp отлично подходит Ready Lisp . Одиночный урон с SBCL, Aquamacs и Slime, работающими из коробки.

С сайта:

Ready Lisp - это связка нескольких популярных пакетов Common Lisp, специально для Mac OS X, включая Aquamacs, SBCL и SLIME. После загрузки у вас будет один пакет приложений, по которому вы можете дважды щелкнуть - и вы окажетесь в полностью сконфигурированном Common Lisp REPL.

Он идеально подходит для пользователей OS X, которые хотят попробовать красоту Common Lisp с минимумом хлопот. Его также могут использовать учителя, чтобы дать своим ученикам Mac бесплатную полную среду Common Lisp, чтобы они могли забрать их домой. Требования

Текущая версия Ready Lisp - 20090127 и требует Mac OS X 10.5 (Leopard).

В него входят следующие версии компонентного программного обеспечения:

Aquamacs  1.6
SBCL    1.0.24
SLIME   2009-01-23
CL-FAD  0.6.2
CL-PPCRE    2.0.1
LOCAL-TIME  0.9.3
SERIES  2.2.10
CL HyperSpec    7.0
paredit.el  20
redshank.el     1
cldoc.el    1.16
Себастьян РоккаСерра
источник
5

Я только начал играть с Clojure . Очевидно, у него есть хорошая веб-структура и он компилируется в байт-код JVM.

Я также довольно часто использую DrScheme . Это простая, но полезная IDE.

Мэтью Шинкель
источник
5

В зависимости от того, как вы определяете "Lisp", Clojure может соответствовать всем требованиям. Он отлично работает в OS X (работает везде, где работает JVM). У него есть веб-возможности, и это бесплатно.

Он также является новым, свежим и интересным в использовании. Может быть идеальным для хобби-программирования. Легко писать веб-приложения или приложения с графическим интерфейсом (используя Java Swing или даже Qt).

Брайан Карпер
источник
4

Я сам не использовал его, но Steel Bank Common Lisp получил положительный отклик на Reddit. Это открытый исходный код и бесплатный, так что цена подходящая для хобби-программирования.

Раньше на моем MacBook Pro работал GNU Common Lisp .

Дана
источник
4

Если вы ищете Scheme, вы можете взглянуть на только что выпущенный JazzScheme .

Марко
источник
4

Я действительно рекомендую Racket новичкам, поскольку он предоставляет одну из самых хороших IDE для новичков в Scheme (или, скорее, для начинающих программистов, которые используют Scheme или, что еще лучше, работают через HtDP).

http://racket-lang.org/

Другой вариант для людей, которые больше заинтересованы в небольшой системе Scheme, чтобы изменить ее самостоятельно или прочитать ее исходный код, - это Larceny Scheme, которая представляет интерес в основном потому, что ее JIT-компилятор Twobit сам полностью реализован на Scheme.

http://www.larcenists.org/


Обновление: Кроме того, недавно был открыт исходный код Chez Scheme:

https://github.com/cisco/ChezScheme

(Он может быть не таким «маленьким», как Larceny, но у него очень агрессивный оптимизирующий компилятор.)

pnkfelix
источник
на веб-сайте они, кажется, упоминают только собственный компилятор, компилятор to-C и реализацию CLR - а где JIT?
Эрик Каплун
Собственный компилятор - это JIT.
pnkfelix
(то есть он динамически компилирует каждое выражение схемы, которое вы передаете ему через 'load' или REPL, в машинный код x86. JIT здесь для «как раз вовремя»; он не связан с Java и JVM, если это то, что вы думал, что я имел в виду под JIT)
pnkfelix
Я не думал, что это как-то связано с Java; просто на домашней странице написано «компилируется непосредственно в машинный код» , и это не то, как обычно описывают JIT-компиляцию виртуальных машин / интерпретаторов.
Эрик Каплун
1
Чтобы ответить на ваш вопрос, вы не можете получить отдельный двоичный файл от Larceny в его нынешнем виде. Вы можете загрузить исходный код схемы, а затем сериализовать его кучу (со скомпилированным кодом) в образ кучи, но даже в этом случае вам все равно придется повторно распространять файл кучи и двоичный файл среды выполнения как отдельные файлы. Я подумал о том, чтобы упростить объединение этих двух изображений в одно двоичное изображение, но никогда не делал решительного шага.
pnkfelix
3

Вы можете посмотреть, что есть в Association of Lisp Users или Common Lisp Wiki, чтобы узнать, что там есть. Я установил себя с Steel Bank Common Lisp и Emacs, но пока мало что сделал с ними.

Дэвид Торнли
источник
2

Если вы просто хобби, у LispWorks есть бесплатная персональная версия, которая является довольно мощной и сложной. Самая большая проблема - ограничение времени работы в несколько часов. Таким образом, вы не будете писать в нем какие-либо долго работающие серверы, но это не значит, что это бесполезный инструмент.

CLISP работает практически со всем, и на самом деле довольно хорош, он просто не выполняет потоки. (Важно, если вы хотите написать реальный сервер, но, как показали нам PHP и Perl, Apache + [вставить язык] - очень жизнеспособная платформа.)

Уилл Хартунг
источник
1

В последнее время я задаю себе тот же вопрос. Я использовал DrScheme на OS X, это был бы мой первый выбор дистрибутива Scheme для любой платформы. Очень хорошая IDE, функции отладки и хороший набор библиотек / фреймворков (включая очень хороший инструментарий GUI, который «просто работает ... даже на Mac» ;-))

Однако сейчас я ищу такую ​​же удобную среду для Common Lisp. Все свелось к CCL (OpenMCL) против SBCL. SBCL кажется популярным выбором, но я читал, что в OS X он не поддерживает потоки. (Это действительно проблема?). Clozure CL, с другой стороны, может похвастаться хорошей поддержкой собственных потоков, obcj-bridge и т. Д.

Я нахожу CCL немного странным, но я собираюсь придерживаться его на некоторое время - он по-прежнему выглядит логичным выбором для интеграции.

Я использую Emacs 23 (созданный из исходного кода с использованием --with-ns) и Slime в качестве среды, и это мне хорошо подходит. :-)


источник
1

Я обнаружил, что Chicken хорошо подходит для Scheme и доступен через homebrew.

brew install chicken

Большая часть кода SICP работает с небольшими изменениями.

Джастин Майнерс
источник