[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: логическое И (and) error: line 27: [: пропущен `]'



Artem Chuprina <ran@ran.pp.ru> writes:

> Dmitrii Kashin -> debian-russian@lists.debian.org  @ Wed, 04 Dec 2013 01:03:05 +0400:
>
>  >>  DK> Так вот, конструкция if-then-else ведёт свою родословную от языка
>  >>  DK> lisp. В классическом варианте она описывается следующем образом:
>  >>
>  >> А это где-то написано, что шелловский if растет из лисповского? Ну, в
>  >> смысле более близкий родственник лисповскому, чем if в любом другом
>  >> языке программирования?
>
>  DK> А разве конструкция if в разных языках работает по-разному?
>
> Работает-то одинаково. Но в ленивых языках, к примеру, нет
> необходимости считать ее специальной формой, там это просто
> синтаксический сахар к функции с тремя аргументами.

Согласен. Но это другая реализация if всё же имеет в основе идею о
ветвлении конструкцией предикат-следствие. А впервые она была
реализована именно в языке Lisp, о чём я и хотел написать. Я всё-таки
сказал, что это экскурс в историю, так что предлагаю рассматривать
данное утверждение просто как любопытный исторический факт.

Я не утверждал, что все реализации if устроены таким образом. Хотя я,
пожалуй, возьмусь утверждать, что реализация конструкции if как особой
формы языка характерна для всех интерпретаторов, реализующих нормальный
порядок вычислений.

Кстати, что касается истории. Сейчас погрепал, где же именно это
написано. Нашёл в PCL, однако. Восьмая сноска, самое начало.

"Некоторые идеи, впервые реализованные в Lisp: конструкция if-then-else,
рекурсивный вызов функций, динамическое распределение памяти, сборка
мусора, представление функций как полноценных объектов, лексические
замыкания, интерактивное программирование, инкрементальная компиляция и
динамическая типизация".

Attachment: pgp5RBlB4g36H.pgp
Description: PGP signature


Reply to: