?

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:
[User Picture]From: permea_kra
2011-01-15 06:22 am (UTC)
>Маткад - говно-говном, а вот ghci - предел совершенства.
Да нет, в общем-то. Но всякие штуки с последовательностями проще считать в ghci.

>если ты пишешь даже простейшую программу с ИО, то это ИО туда можно ввести сотней различных способов,
interact :: (String -> String) -> IO ()
The interact function takes a function of type String->String as its argument. The entire input from the standard input device is passed to this function as its argument, and the resulting string is output on the standard output device. (c) Prelude
Это, если че, стандартная библиотека, которая
а) стандартизирована
б) описывается первым делом.

Это во-первых. Во-вторых, ебли с тайпчекером при работе с IO - ноль. Откуда ей там взяться? Либо ты можешь делать IO в функции, либо нет. Если нет - ну извини, но какого хрена ты в неё лезешь с IO ? Если да, то где ебля?

Короче, все отмазы про еблю с тайпчекером - гнилые. Лень ещё один язык учить - ну так и признайтесь.
(Reply) (Parent) (Thread)
From: ext_55374
2011-01-15 11:14 pm (UTC)
> Откуда ей там взяться?

Я думаю, автор имеет в виду это:

Prelude Data.List> let t = readFile "/tmp/1"
Prelude Data.List> t
"Hello world\n"
Prelude Data.List> :t t
t :: IO String
Prelude Data.List> words t

:1:6:
Couldn't match expected type `String'
against inferred type `IO String'
In the first argument of `words', namely `t'
In the expression: words t
In the definition of `it': it = words t
(Reply) (Parent) (Thread)