Простые способы испытать и протестировать синтаксис Lisp?

Вы не делаете. Стандартный C++ не подвергает понятию каталога. Конкретно это не уступает никому дорогу для списка всех файлов в каталоге.

А ужасный взлом должен был бы использовать систему () вызовы и проанализировать результаты. Самое разумное решение состояло бы в том, чтобы пользоваться некоторой межплатформенной библиотекой такой как Qt или даже POSIX.

15
задан Alex Miller 22 July 2016 в 21:55
поделиться

11 ответов

SISC Online REPL - именно то, что вам нужно. Он принимает синтаксис Scheme, который является вариантом Lisp.

Для автономного приложения мне нравится PLT Scheme , потому что он, кажется, работает одинаково на каждой платформе, которую я пробовал. Раньше я использовал схему MIT в Ubuntu, но решил переключиться, когда купил новую машину с установленной 64-битной Vista.

11
ответ дан 1 December 2019 в 01:05
поделиться

Рискуя потерять все моих очков репутации, попробуйте newlisp .

8
ответ дан 1 December 2019 в 01:05
поделиться
​​

Раньше я использовал LispBox . Легко настроить и начать работу, но я должен признать, что Emacs для меня - вторая натура. Если вы не знакомы с этим, вы можете использовать другой редактор, но знакомство с Emacs поможет вам комфортно жить в Лиспвилле.

5
ответ дан 1 December 2019 в 01:05
поделиться

Для изучения Lisp LispWorks персональная версия подходит: LispWorks загружает . Есть версии для Mac OS X, Windows, Linux и FreeBSD. Все они имеют одинаковые возможности пользовательского интерфейса, включая редактор и слушатель, а также множество других инструментов. В Linux и FreeBSD в настоящее время (LispWorks 5) используется X11 / Motif для графического интерфейса пользователя - это будет изменено в будущей версии (LispWorks 6) на GTK. Итак, чтобы запустить его сейчас под Linux, у вас должна быть установлена ​​библиотека Motif . В остальном его использование относительно безболезненно. Для него есть некоторые ограничения (всего 5 часов работы, затем вам нужно сохранить и перезапустить, ...), а полная версия является коммерческой. Но для изучения некоторых основ Lisp это неплохо.

), а полная версия является коммерческой. Но для изучения некоторых основ Lisp это неплохо.

), а полная версия является коммерческой. Но для изучения некоторых основ Lisp это неплохо.

2
ответ дан 1 December 2019 в 01:05
поделиться

Я не буду редактировать код Lisp без редактора, который делает то, что Emacs будет делать со следующей конфигурацией:

(define-key lisp-mode-shared-map "[" 'insert-parentheses)
(define-key lisp-mode-shared-map "]" 'move-past-close-and-reindent)

Первый вставляет сбалансированные круглые скобки. Если вы дадите ему аргумент числового префикса, он вставит столько вложенных пар. По умолчанию он вставляет один. Если у вас есть отмеченная текстовая область, она включает эту область во внутреннюю вставленную пару. Это означает, что вы никогда не откроете незакрытые круглые скобки.

Последнее сложнее объяснить, поскольку они используются реже. Это больше похоже на команду навигации, чем на команду вставки. Он подтверждает, что вы закончили редактирование текущей формы, и перемещает курсор вверх, наружу и мимо нее, готовясь к следующей вероятной вставке.

Когда эти клавиши связаны, больше не нужно использовать клавишу Shift для доступа к круглые скобки. Также, при этом ключи в круглых скобках остаются связанными как обычно, когда требуется ремонт sexp или буквальная скобка. Я украл ключи скобок, потому что они так редко используются в Emacs Lisp и Common Lisp. Символы скобок по-прежнему доступны с привязками мета-клавиш:

(defmacro make-key-inserter (def)
  "Substitute for `self-insert-command'."
  `(lambda (arg)
    (interactive "*P")
    (insert-char ,def (prefix-numeric-value arg))))

(define-key lisp-mode-shared-map "\M-[" (make-key-inserter ?\[))
(define-key lisp-mode-shared-map "\M-]" (make-key-inserter ?\]))

Не обязательно использовать Emacs, но не соглашайтесь на меньшее с другим редактором, который, по крайней мере, не может соответствовать этой возможности. Также существует целое семейство команд для навигации и управления деревом sexp как деревом . Чтобы понять, почему это так ценно, вам придется некоторое время возиться, пока вы не перестанете видеть синтаксис и не начнете видеть дерево.

re используется так редко в Emacs Lisp и Common Lisp. Символы скобок по-прежнему доступны с привязками мета-клавиш:

(defmacro make-key-inserter (def)
  "Substitute for `self-insert-command'."
  `(lambda (arg)
    (interactive "*P")
    (insert-char ,def (prefix-numeric-value arg))))

(define-key lisp-mode-shared-map "\M-[" (make-key-inserter ?\[))
(define-key lisp-mode-shared-map "\M-]" (make-key-inserter ?\]))

Не обязательно использовать Emacs, но не соглашайтесь на меньшее с другим редактором, который, по крайней мере, не может соответствовать этой возможности. Также существует целое семейство команд для навигации и управления деревом sexp как деревом . Чтобы понять, почему это так ценно, вам придется некоторое время возиться, пока вы не перестанете видеть синтаксис и не начнете видеть дерево.

re используется так редко в Emacs Lisp и Common Lisp. Символы скобок по-прежнему доступны с привязками мета-клавиш:

(defmacro make-key-inserter (def)
  "Substitute for `self-insert-command'."
  `(lambda (arg)
    (interactive "*P")
    (insert-char ,def (prefix-numeric-value arg))))

(define-key lisp-mode-shared-map "\M-[" (make-key-inserter ?\[))
(define-key lisp-mode-shared-map "\M-]" (make-key-inserter ?\]))

Не обязательно использовать Emacs, но не соглашайтесь на меньшее с другим редактором, который, по крайней мере, не может соответствовать этой возможности. Также существует целое семейство команд для навигации и управления деревом sexp как деревом . Чтобы понять, почему это так ценно, вам придется некоторое время возиться, пока вы не перестанете видеть синтаксис и не начнете видеть дерево.

s также целое семейство команд для навигации и управления деревом sexp как деревом . Чтобы понять, почему это так ценно, вам придется некоторое время возиться, пока вы не перестанете видеть синтаксис и не начнете видеть дерево.

s также целое семейство команд для навигации и управления деревом sexp как деревом . Чтобы понять, почему это так ценно, вам придется некоторое время возиться, пока вы не перестанете видеть синтаксис и не начнете видеть дерево.

1
ответ дан 1 December 2019 в 01:05
поделиться

Поскольку вы используете Ubuntu, я бы просто установил некоторые пакеты и попробовал их.

Common Lisp: apt-get install clisp
Схема : apt-get install drscheme

Это не единственные упакованные реализации, но, возможно, с ними проще начать работу. Вы сможете играть в REPL, а также запускать свои собственные скрипты через интерпретатор.

1
ответ дан 1 December 2019 в 01:05
поделиться

Franz has an online REPL for Allegro Common Lisp.

http://www.franz.com/products/allegrocl/prompt/

2
ответ дан 1 December 2019 в 01:05
поделиться

В настоящее время нетрудно получить Clojure REPL.

  1. Перейдите на http://build.clojure.org/ и загрузите clojure.jar .
  2. Установите JVM.
  3. java -jar clojure.jar

Это должно работать на любой машине, на которой установлена ​​JVM.

Для большего удовольствия установите rlwrap и используйте rlwrap java -jar clojure .

5
ответ дан 1 December 2019 в 01:05
поделиться

BioBike предоставляет полный оценщик Common Lisp через Интернет (с дополнительными функциями, такими как система представления знаний, биокомпьютеры и альтернативный визуальный язык).

1
ответ дан 1 December 2019 в 01:05
поделиться

Если вы просто хотите поиграть с LISP, быстро и интерактивно, GNU Emacs имеет встроенный интерпретатор LISP, который прослушивает буфер * scratch * . Введите S-выражение, расположите сразу после него, а затем нажмите Ctrl-J, чтобы оценить его. Или : поместит приглашение Eval: в минибуфер, примет S-выражение и оценит его.

Вы можете определять функции, используя defun, и таким образом тестировать вещи. У вас есть доступ ко ВСЕМ встроенным функциям GNU Emacs и ко всему, что вы загрузили. Если вы хотите сохранить вещи под рукой, вы можете поместить их в свой файл .emacs.

1
ответ дан 1 December 2019 в 01:05
поделиться

codepad.org - удобный простой онлайн-способ ввода и запуска кода (на многих разных языках, включая Scheme). Я постоянно использую его для тестирования фрагментов кода для использования в ответах SO.

2
ответ дан 1 December 2019 в 01:05
поделиться