Вы не делаете. Стандартный C++ не подвергает понятию каталога. Конкретно это не уступает никому дорогу для списка всех файлов в каталоге.
А ужасный взлом должен был бы использовать систему () вызовы и проанализировать результаты. Самое разумное решение состояло бы в том, чтобы пользоваться некоторой межплатформенной библиотекой такой как Qt или даже POSIX.
SISC Online REPL - именно то, что вам нужно. Он принимает синтаксис Scheme, который является вариантом Lisp.
Для автономного приложения мне нравится PLT Scheme , потому что он, кажется, работает одинаково на каждой платформе, которую я пробовал. Раньше я использовал схему MIT в Ubuntu, но решил переключиться, когда купил новую машину с установленной 64-битной Vista.
Рискуя потерять все моих очков репутации, попробуйте newlisp .
Раньше я использовал LispBox . Легко настроить и начать работу, но я должен признать, что Emacs для меня - вторая натура. Если вы не знакомы с этим, вы можете использовать другой редактор, но знакомство с Emacs поможет вам комфортно жить в Лиспвилле.
Для изучения Lisp LispWorks персональная версия подходит: LispWorks загружает . Есть версии для Mac OS X, Windows, Linux и FreeBSD. Все они имеют одинаковые возможности пользовательского интерфейса, включая редактор и слушатель, а также множество других инструментов. В Linux и FreeBSD в настоящее время (LispWorks 5) используется X11 / Motif для графического интерфейса пользователя - это будет изменено в будущей версии (LispWorks 6) на GTK. Итак, чтобы запустить его сейчас под Linux, у вас должна быть установлена библиотека Motif . В остальном его использование относительно безболезненно. Для него есть некоторые ограничения (всего 5 часов работы, затем вам нужно сохранить и перезапустить, ...), а полная версия является коммерческой. Но для изучения некоторых основ Lisp это неплохо.
), а полная версия является коммерческой. Но для изучения некоторых основ Lisp это неплохо. ), а полная версия является коммерческой. Но для изучения некоторых основ Lisp это неплохо.Я не буду редактировать код 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 как деревом . Чтобы понять, почему это так ценно, вам придется некоторое время возиться, пока вы не перестанете видеть синтаксис и не начнете видеть дерево.Поскольку вы используете Ubuntu, я бы просто установил некоторые пакеты и попробовал их.
Common Lisp: apt-get install clisp
Схема : apt-get install drscheme
Это не единственные упакованные реализации, но, возможно, с ними проще начать работу. Вы сможете играть в REPL, а также запускать свои собственные скрипты через интерпретатор.
В настоящее время нетрудно получить Clojure REPL.
clojure.jar
. java -jar clojure.jar
Это должно работать на любой машине, на которой установлена JVM.
Для большего удовольствия установите rlwrap и используйте rlwrap java -jar clojure
.
BioBike предоставляет полный оценщик Common Lisp через Интернет (с дополнительными функциями, такими как система представления знаний, биокомпьютеры и альтернативный визуальный язык).
Если вы просто хотите поиграть с LISP, быстро и интерактивно, GNU Emacs имеет встроенный интерпретатор LISP, который прослушивает буфер * scratch *
. Введите S-выражение, расположите сразу после него, а затем нажмите Ctrl-J, чтобы оценить его. Или
поместит приглашение Eval: в минибуфер, примет S-выражение и оценит его.
Вы можете определять функции, используя defun, и таким образом тестировать вещи. У вас есть доступ ко ВСЕМ встроенным функциям GNU Emacs и ко всему, что вы загрузили. Если вы хотите сохранить вещи под рукой, вы можете поместить их в свой файл .emacs.
codepad.org - удобный простой онлайн-способ ввода и запуска кода (на многих разных языках, включая Scheme). Я постоянно использую его для тестирования фрагментов кода для использования в ответах SO.