ljr - Юра Бронников - Программизм. Haskell. [entries|archive|friends|userinfo]
Юра Бронников

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Программизм. Haskell. [Aug. 9th, 2006|07:11 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
Возникла небольшая задачка помимо основной работы -- решил ее использовать, чтобы пощупать Хаскель.
Совершенно неожиданное впечатление -- оказывается, это для меня write-only язык. То есть, все эти монады (по крайней мере, IO), включая mapM и foldM, а также активно поощряемый языком currying очень удобны в использовании и позволяют писать программы компактно и с удовольствием. Но вот столь же легко эти программы читать, даже если я только что их написал, не получается.
Интересно, приходит ли более легкое восприятие с опытом.
LinkLeave a comment

Comments:
From:[info]alexott.livejournal.com
Date:August 9th, 2006 - 05:53 pm
(Link)
у меня не получалось. я всегда читаю их с достаточным трудом
From:[info]9000.livejournal.com
Date:August 9th, 2006 - 06:55 pm

(Link)
"Может быть, если бы мы писали программы с детства, к зрелым годам мы научались бы их читать" (кто-то известный)
[User Picture]
From:[info]polter
Date:August 10th, 2006 - 07:37 am
(Link)
Странно. А я вот как-то не знаю языка более читабельного.
Когда вместо десяти функций одна строчка - на чтение и понимание этой строки все равно уйдет времени меньше, чем.
[User Picture]
From:[info]gogabr
Date:August 10th, 2006 - 12:32 pm
(Link)
Вот это уже для меня странная точка зрения.
Вроде бы, языки, известные компактностью кода (APL, Forth, Perl) известны и тем, что код этот очень трудно читать.
[User Picture]
From:[info]polter
Date:August 10th, 2006 - 12:43 pm
(Link)
Перл-то тут при чем.
Перл компактностью не отличается как раз. Ну и синтаксис чудовищный.

А от АПЛ и фортом хаскель отличается строгой статической типизацией и очень простой выч. моделью.
никаких монад-диад, стэк-эффектов и тп.
только комбинаторы и все.
жесткое отличие инфиксных и префиксных функций, явная композиция и все такое.
Честно говоря я лично не знаю даже в чем там можно заблудиться.
Хотя, все это может быть личным восприятием, не знаю.
From:[info]http://users.livejournal.com/_adept_/
Date:August 28th, 2006 - 10:38 am
(Link)
Те write-only программы на Haskell, которые я видел (и иногда даже писал) были обязаны своим write-only свойствам двум вещам:

1)Не используем data constructors, все суем в tuples и lists, не боимся вещей вроде [[(Int,[(Int, String, String)])]]

2)Стараемся обойтись минимальным количеством функций, впихивая в них побольше кода

При следовании этим двум принципам, получается замечательный write-only код.