Определение списка в схеме - PullRequest
1 голос
/ 16 февраля 2011

Наконец, сделав шаг к изучению диалекта Лисп (Схема), я столкнулся с двумя определениями списка -

«Либо пустой список, либо пара, чей CDR является списком».

«Коллекция S-выражений, заключенная в скобки».

Эти определения эквивалентны?

Ответы [ 2 ]

4 голосов
/ 16 февраля 2011

Я собираюсь показать мое любимое шоу с собаками и пони!

Дерево минусов http://cloud9.hedgee.com/priv/expr1.png

Это соответствует следующему:

(let ((s5 (sqrt 5)))
  (/ (- (expt (/ (1+ s5) 2) n)
        (expt (/ (- 1 s5) 2) n)) s5))

Диаграмма иллюстрирует ваше первое утверждение (объект пустого списка обозначается как черный ящик). Фрагмент кода иллюстрирует ваш второй. : -)

4 голосов
/ 16 февраля 2011

Они эквивалентны {'a','b','c'} и "abc"

Первый - это логическое представление списка машиной, второй - как вы представляете его в своем коде.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...