Я читаю SICP и пытаюсь следить за ним, но почему интерпретаторы Лиспа, которые я нахожу в сети, не работают с ключевым словом DEFINE?

Это книга ...

http://mitpress.mit.edu/sicp/full-text/book/book.html

Есть идеи, какой интерпретатор мне следует использовать для работы с представленным здесь кодом?

Пока я пробовал несколько онлайн и скачивал интерпретаторы Лиспа, и все, что я получал, это ошибки, когда я пытался использовать DEFINE.

Пример:

Из этого раздела: http://mitpress.mit.edu/sicp/full-text/book/book-ZH-10.html#%_sec_1.1

Поместите сюда: http://www.ugcs.caltech.edu/~rona/tlisp/

> (define (square x) (* x x))
*** EVAL Error: Function 'DEFINE' is not defined. ***

Также пробовал с «lispbox» с аналогичными результатами.

Ах, ха: http://sisc-scheme.org/sisc-online.php работает , спасибо за подсказку blabla999, скоро приму ответ.

После дальнейшего исследования: Схема! = Common Lisp


person Ryan    schedule 12.12.2011    source источник


Ответы (3)


наверное потому что:

(Схема эквалайзера CommonLisp) -> #f

а также:

(Схема эквалайзера ManyOtherLisps) -> #f

попробуйте реальную схему (я рекомендую plt, который недавно был переименован в Racket). (Или напишите свой - см. http://www.avc-cvut.cz/avc.php?id=9769)

person blabla999    schedule 12.12.2011
comment
Уровень замешательства увеличен на 100%. Что это значит? Подождите ... вы говорите, что они не равны? Итак, «Схема» - это особая разновидность Лиспа? - person Ryan; 13.12.2011
comment
Scheme - это язык, производный от Lisp, но Common Lisp - это наиболее типичная вещь, называемая «Lisp» на сегодняшний день (плюс-минус). Лисп = язык предков / языковая семья; Схема = один потомок / член семьи; Common Lisp = что (большинство?) Людей имеют в виду под «Lisp», когда относятся к единственному языку. - person BRPocock; 13.12.2011
comment
(eq 'common-lisp' clos) - ›NIL & (часть-of 'clos' common-lisp) -› T - person Rainer Joswig; 13.12.2011
comment
Фактически, в настоящее время я бы даже сказал: Lisp - это синтаксис, и как таковой общий для всех них. Scheme и CL (и другие) определяют конкретную (и на самом деле совсем другую) семантику. - person blabla999; 13.12.2011
comment
@ blabla999, CLOS - это сокращение от Common Lisp Object System, подсистемы ООП Common Lisp. Язык программирования называется Common Lisp. Его сокращение - CL. - person Rainer Joswig; 13.12.2011
comment
@rainer: ;-) [а почему вы сравниваете имена, а не вещи?) - person blabla999; 13.12.2011
comment
@ blabla999, потому что в Лиспе символы относятся к вещам. Значение CLOS и Scheme - это снова просто другое представление, еще одно косвенное указание. - person Rainer Joswig; 13.12.2011
comment
Зависит от среды, в которой вы оцениваете - верно? Итак, (равная 'куриная' железная схема) - ›#f, но (равная куриная железная схема) -› #t (ну, не совсем, но вы меня поняли ...) - person blabla999; 13.12.2011

Существует множество различных диалектов Лиспа, из которых Common Lisp, пожалуй, является наиболее используемым сегодня. Схема, с которой вы знакомы, не претендует на звание Лиспа, хотя у нее много общих характеристик.

Что бы это ни стоило, то, что вы пытаетесь сделать, написано

(defun square (x) (* x x))

в Common Lisp.

person jforberg    schedule 13.12.2011

Самый простой (безусловно) способ получить среду Lisp для примеров в SCIP - это использовать DrRacket в Racket, который можно найти здесь http://racket-lang.org/

В среде DrRacket есть редактор и REPL, который поддерживает копирование / вставку и печать почти так же, как инструмент Python Idle. Он прост в установке и работает со всеми примерами из книги и видео.

Я нашел еще один полезный совет по изучению лиспа здесь: http://www.learningclojure.com/2011/02/advice-to-newbie.html

person dansalmo    schedule 21.11.2012