Что такое '(апостроф) в Lisp / Схема?

Я был выводом на Платформа Зенда посредством ее 1,0 выпусков. Мы часто получали комментарии, что это не была "платформа" в том смысле, что разработчики ожидали - они сказали, что это было больше библиотеки классов.

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

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

, Но я все еще чувствовал, что Платформа Зенда квалифицировала как платформа, вместо SDK, еще одним способом: платформа расширяема . Это разработано как ряд объектно-ориентированных базовых классов, и намеченное использование состоит в том, что разработчики или extend эти классы, или пишут простые сменные классы, для добавления функциональности.

А традиционный SDK не расширяем . Вы просто призываете методы API обеспеченные классы, они делают то, что они делают, и Вы имеете дело с результатом. Любая настройка находится в Вашем использовании API и как Вы используете результаты.

59
задан nbro 5 September 2017 в 19:08
поделиться

5 ответов

Форма 'foo - это просто более быстрый способ введите специальную форму

(quote foo)

, которая означает: «не оценивайте имя foo и заменяйте его его значением; я действительно имею в виду имя foo».

Я думаю, что SISC отлично подходит для изучения упражнений в TLS.

56
ответ дан 24 November 2019 в 18:20
поделиться

Вам необходимо понять основные правила оценки схемы.

Сначала :

(atom? 'turkey)

Список представляет собой приложение-функцию, поэтому вычисляется атом? к функции. 'индейка - это сокращенное обозначение для (цитата из индейки) . Вычисление (цитата из индейки) дает символ индейка .

Затем функция применяется к символу индейка и вычисляется возвращаемое значение.

] Second

(atom? turkey)

Снова у нас есть приложение-функция, и atom? вычисляется как функция. На этот раз индейка является переменной. Вычисление индейки дает связанное с ним значение - каким бы оно ни было.

Итак, затем функция применяется к значению переменной индейка .

Резюме

12133] индейка - это переменная, которая вычисляется по ее значению. 'индейка - это (цитата из индейки) , который оценивается в символ индейка .

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

26
ответ дан 24 November 2019 в 18:20
поделиться

SISC хорош, но еще более легкий исполнитель онлайн-схем - это http://codepad.org . На самом деле это не REPL, поскольку он не интерактивен, но довольно близок. Код, который вы отправляете, выполняется на стороне сервера вместо использования апплета браузера. И вы можете поделиться кодом, который вы используете, с помощью короткого URL.

На странице about на кодовой панели говорится, что она использует "MzScheme v372 [cgc]".

Я использую кодовую панель для всех видов быстрых тестирование фрагментов (включая образцы кода тестирования для ответов SO!).

Для синтаксиса кавычек разницу можно увидеть, используя следующий код:

(let ((x 5))
  (display x) (newline)
  (display 'x) (newline))

Здесь отображается:

5
x

В первом случае x оценивается и передается на дисплей , который печатает 5. Во втором случае

14
ответ дан 24 November 2019 в 18:20
поделиться
  1. Я предлагаю вам перейти на лучшую среду, такую ​​как PLT Scheme , в которой есть IDE, отладчик и множество библиотек. По мере того, как вы продвигаетесь вперед и начинаете писать более крупные программы, они вам понадобятся.

  2. Символ одинарной кавычки является синтаксическим сахаром для выражения «цитата», поэтому 'turkey то же самое, что (quote turkey). По сути, "quote" выключает оценщик схемы. Другими словами, "quote" возвращает дословное выражение. Если бы не было «цитаты», Scheme попыталась бы оценить «индейку» в текущих условиях. Это не Common Lisp, а Lisp. Common Lisp и Scheme - это два диалекта Lisp. Использование цитаты объясняется во всех учебниках / книгах по Lisp. Также см. Ответы на этот вопрос .

4
ответ дан 24 November 2019 в 18:20
поделиться

Символ одинарной кавычки - это сокращенный способ сказать (цитата foo), где кавычка - это форма, которая возвращает только foo без его оценки.

Одна вещь, которую действительно следует помнить в Scheme или любом Lisp в этом отношении, - это то, что все есть оценивается по умолчанию. Итак, в тех случаях, когда вы не хотите оценивать, вам нужен способ выполнить это.

Цитирование чего-либо делает именно это, а одинарные кавычки просто требуют меньше ввода и приводят к менее подробному коду.

4
ответ дан 24 November 2019 в 18:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: