- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
from fakelisp import *
# And now you can write Lisp
(BEGIN
(SET (F) (LAMBDA (X)
(IF (EQ (X) (1))
(1)
(MUL (X) (F (SUB (X) (1)))))))
(SET (X) (QUOTE (F (4)) (42))))
# Back to Python any time
print "x: ", X
laMer007 14.01.2014 13:49 # −1
tirinox 14.01.2014 13:58 # −1
kegdan 14.01.2014 14:36 # 0
orion 14.01.2014 14:37 # 0
пысы: лисп на плюсах http://www.intelib.org/intro.html
kipar 14.01.2014 16:56 # +4
не нужен.
myaut 14.01.2014 17:21 # 0
Vindicar 14.01.2014 18:39 # +1
Ну да, программу можно представить как список списков списков списков.
Но зачем?
Эзотерика, а многие почему-то считают его практически применимым.
Единственное практическое преимущество, имхо - простота парсера. Это да, это есть. Но всё остальное...
defecate-plusplus 14.01.2014 18:41 # +6
kegdan 14.01.2014 18:49 # −2
Vindicar 14.01.2014 19:08 # −2
kegdan 14.01.2014 18:48 # −1
Vindicar 14.01.2014 19:10 # −2
Кстати, да, консоль по сути ведь... не замечал.
Stertor 14.01.2014 20:32 # −3
roman-kashitsyn 15.01.2014 07:08 # 0
Мы с бормандом это уже как-то обсуждали, но обсуждение не гуглится :(
bormand 15.01.2014 08:01 # +1
roman-kashitsyn 15.01.2014 08:24 # +2
Dummy00001 15.01.2014 01:31 # +3
Почитай как макросы работают в лиспе.
Регулярность синтакса позволяет макросам генерировать все что угодно. А это в свою очередь позволяет создавать новые конструции которые полноценно интегрируются с остальным языком. Потому что макросы по синтаксу ничем не отличаются от остальных конструкций.
Вот тот же (loop) посмотри. Лично не фан, но просто факт что такое можно написать макросом, да и еще на уровне макроса добавить оптимизаций, это что то.
wvxvw 15.01.2014 10:12 # +2
1. Способ записи (аналогично, как Фортрано-подобные языки все похожи друг на друга способом записи).
2. Наличием встроенного в рантайм компилятора / интерпретатора языка. С этой точки зрения, например Питон или Руби - тоже лиспы.
Не все лиспы исторически обладали "лисповым" синтаксисом, у Дилана - фортрановский синтаксис.
Половина лиспов использующихся сегодня - не функциональные языки, (функциональные, или по крайней мере близкие - Схема, Ракет, Кложур). В Эмакс Лиспе до последней редакции не было даже возможности создавать замыкания.
Большинство современных лиспов не выполняют код один-в-один с деревом представленным его исходником. Есть много оптимизирующих компиляторов, которые расценивают этот код, как промежуточное звено.
Смысл использовать Лисп в том, что с помощью инструментов языка можно очень легко строить языковые расширения. Например, чтобы в Яве автоматически создать сеттер и геттер для поля класса нужно написать / импортировать lombok аннотации, и после чего это все равно будет выглядеть уродски, не говоря уже про более сложные структуры, где это иногда будет выглядеть либо очень громоздко, либо вообще невозможно. (Попробуйте добавить в Яве другую разновидность форича, которая перебирает сразу несколько коллекций).
Лисп хорошо сочетается с исследовательской работой в области программирования, когда нужно представить какую-нибудь концепцию, для которой еще не написан компилятор / интерпретатор. Или для понятий, которые не заложены в другой язык изначально. Например, в Яве можно сымитировать и множественное наследование, и множественный диспатч, метаклассы и т.п. Но синтаксис для этого будет очень громоздкий, что пользоваться этим будет не удобно. В Лиспе, если бы нам нужно было сделать что-нибудь похожее, наши нововведения ни чем бы не отличались от уже существующих инструментов.
roman-kashitsyn 15.01.2014 10:33 # +1
> Способ записи
Sexp - способ записи, а не лисп, имхо
> Лисп может относится к двум понятиям
> Питон или Руби - тоже лиспы
А можно пруфы?
LISP = LISt Processing language
Хм... Следуя такой логике, можно считать, что любой язык, в котором можно обрабатывать списки - полноценный лисп.
wvxvw 15.01.2014 10:37 # 0
roman-kashitsyn 15.01.2014 10:51 # +1
Ну даже если так, ткните носом, где там написано, что лисп это лишь форма записи и/или доступный в рантайме интерпретатор/компилятор. Семейство языков - да, но взгляда на код обычно достаточно, чтобы сказать, лисп это или нет.
wvxvw 15.01.2014 14:00 # 0
Кроме того, есть известное интервью с МакКарти, где его спрашивали о том, считает ли он Руби лиспом (он не считал). Но факт того, что такие заявления делались как бы на лицо.
ЗЫ. http://www.european-lisp-symposium.org/
Они вот, например, ж.скрипт причисляют к лиспам :(
Abbath 16.01.2014 16:00 # 0
kegdan 15.01.2014 10:41 # 0
bormand 15.01.2014 11:34 # 0
kegdan 15.01.2014 12:45 # 0
laMer007 04.02.2014 11:39 # −2
http://habrahabr.ru/post/208934/