- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
int main() {
interpretator_t i;
i.eval(
{let, "factorial_helper", {quote, {"this", "num"},
{if_, {eq_, {"num"}, 0}, 1, {mul_, {"num"}, {{"this"}, {"this"}, {sub_, {"num"}, 1}}}}
},
{let, "factorial", {quote, {"num"}, {{"factorial_helper"}, {"factorial_helper"}, {"num"}}},
{do_,
{write_, "vvedite chislo: "},
{assign_, "x", {to_number_, {read_}}},
{write_, "factorial: "},
{write_, {{"factorial"}, {"x"}}},
{write_, "\n"}
}
}}
);
return 0;
}
Смотрите, какой лисп я написал. Он еще и ленивый.
3_14dar 01.10.2015 03:01 # 0
inkanus-gray 01.10.2015 11:05 # +3
Abbath 01.10.2015 11:49 # 0
3_14dar 01.10.2015 18:15 # −1
gost 01.10.2015 12:33 # 0
Dummy00001 01.10.2015 14:32 # 0
ЗЫ и лисп не ленивый.
roman-kashitsyn 01.10.2015 14:34 # 0
Лол что? Что такое lisp? Что мне мешает реализовать диалект с отложенными вычислениями?
Dummy00001 01.10.2015 14:52 # 0
Браво! Ответ настоящего лиспщика!!! ;-)
roman-kashitsyn 01.10.2015 15:01 # +2
Лиспера
Дело в том, что не существует языка программирования Lisp. Есть семейство языков с похожими идеями, слово Lisp никак не описывает семантику. Четвёртая глава SICP же.
Dummy00001 01.10.2015 17:01 # 0
Чувствую что на какой-то ваш внутренний холивар нарываюсь, но все таки спрошу: Common Lisp?
roman-kashitsyn 01.10.2015 17:31 # +3
У Scheme тоже периодически стандарты выходят.
Является ли CL лиспом? Да.
Является ли Scheme лиспом? Да.
Является ли Clojure лиспом? Да.
Является ли ELisp лиспом? Да.
При этом никакие два диалекта толком не совместимы, семантика во многом различается. Например, есть понятия Lisp1 (Scheme, Clojure) и Lisp2 (CL, Elisp).
В общем, Lisp - это семейство, основанное на общих идеях, но каждый представитель обладает собственной семантикой.
Можно сделать лисп, обладающий семантикой эрланга (http://lfe.io/), можно использовать семантику пролога, можно добавить строгой типизации и получить Хаскелл со статической проверкой типов и горой скобок.
3.14159265 01.10.2015 17:44 # +1
Замечу что тут нет критической массы лисперов для холивора какой из двух подходов лучше: с отдельным неймспейсом или без, как например в js.
roman-kashitsyn 01.10.2015 17:48 # 0
Никакой.
Для языка общего назначения больше подходит Lisp1, т.к. он гораздо прозрачнее и предсказуемее.
Для специализированных применений Lisp2 предоставляет больше приятных возможностей. Например, в Elisp к произвольным символам можно аттачить не только функции, но и доку, например (примерно как __doc__ в пистоне).
3_14dar 01.10.2015 18:14 # 0
Только к функциям же.
Desktop 11.06.2019 18:18 # 0
- снова немного понекропощу. А какой лисп из коробки предлагает статическую поверку типов, да так, чтобы это было production ready? typed/racket не предлагать
cmepmop 11.06.2019 19:04 # 0
для тех, кто любит пожощще, ага?
guest8 11.06.2019 19:09 # −999
cmepmop 11.06.2019 22:29 # 0
O4epegHou_nemyx 11.06.2019 23:17 # 0
O4epegHou_nemyx 11.06.2019 23:55 # 0
cmepmop 12.06.2019 00:31 # 0
cmepmop 12.06.2019 00:31 # 0
guest8 12.06.2019 00:59 # −999
Xom94ok 01.10.2015 16:17 # +2
CHayT 01.10.2015 17:22 # 0
надо было на шаблонах в compile time
roman-kashitsyn 01.10.2015 17:35 # +1
bormand 01.10.2015 18:04 # +2
CHayT 01.10.2015 21:59 # +1
Bobik 02.10.2015 14:55 # 0
guest 02.10.2015 23:11 # 0
Bobik 02.10.2015 23:12 # 0