?

Log in

Почему LISP? - Жить не можем без проблем! [entries|archive|friends|userinfo]
Жить не можем без проблем!

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Почему LISP? [Jan. 13th, 2011|02:05 pm]
Жить не можем без проблем!

ru_lisp

[aralex]

Как говорил Ворошилов, вопрос к Знатокам (к знатокам LISP-а в данном случае)! Почему таки LISP? Или, если конкретнее, вопроса три:

  1. Для каких именно задач LISP подходит больше, чем другие языки?
  2. За счёт чего для них он подходит больше?
  3. В чём именно выражается его преимущество?

Если не в лом, приведите, pls, коротенькие иллюстрации на LISP-е (или ссылочку на них). Заранее благодарен!

Исходно данный пост был размещён в сообществе ru_programming, но там Знатоков, способных ответить внятно и по сути, увы, не нашлось :(

linkReply

Comments:
From: ext_55374
2011-01-20 05:21 pm (UTC)
Ещё пример:

Prelude> let xs = map (\t -> (readFile ("/tmp/" ++ t)) >>= print) ["a", "b", "c"]
Prelude> :t xs
xs :: [IO ()]

Идём в shell:
>echo 1 > /tmp/a ; echo 2 > /tmp/b ; echo 3 > /tmp/c

Назад в ghci:
Prelude> foldl1 (>>) $ reverse xs
"3\n"
"2\n"
"1\n"

Опять в shell:
>echo 11 > /tmp/a ; echo 22 > /tmp/b ; echo 33 > /tmp/c

Опять в ghci:
Prelude> foldl1 (>>) $ reverse xs
"33\n"
"22\n"
"11\n"
(Reply) (Parent) (Thread)
From: ext_55374
2011-01-20 05:22 pm (UTC)
То же самое будет, если let ys = foldl1 (>>) $ reverse xs и дёргать этот самый ys :: IO () вместо всего выражения.
(Reply) (Parent) (Thread)