?

Log in

No account? Create an account
Main

Шашечки в руки взял....

Тааак. мозг начал греться об Хаскель. Пока интересно, но уже понятно, что на первых порах понимать программы на этом языке будет нелегко.

Оказывается и инструмент для TDD имеется:
http://book.realworldhaskell.org/read/testing-and-quality-assurance.html
Tags:

Comments

Haskel - это не в чистом виде функциональное программирование. "Чистая линия" это LISP. А в Haskel объединили BNF и много чего еще. Но синтаксис у него из-за это получился еще тот. Крышу может снести...
угу. сижу строчки из примеров практичеки, как расшифровываю. Но не может же оно быть совсем неприступным.

буду беречь крышу :)
Да, сколько раз читал разнообразные введения в хаскель - пока концепции объясняются, все понятно и приятно, а как дело до собственно кода доходит, так об стену убиться можно.
С каких это пор LISP стал функциональным языком, да ещё чистым???
+1 На лиспе пишут в императивном стиле.
Как правило.
Это "отрыжка" от Emacs.
А что, пардон, написано на LISP с преимущественным использованием функционального стиля? Или, может быть, есть хотя бы книга по LISP, преимущественно, опять-таки, использующая функциональный стиль? SICP приводить не надо, это, во-первых, не совсем LISP (а его диалект), а во-вторых, это книга не по языку, а по программированию.
Почитайте работы Маккарти, создателя LISP-а. А так же обсуждение LISP в 60-х годах. Очень советую чтобы в будущем не излагали подобные глупости. Даже в вики указано, что:
Наиболее известными языками функционального программирования являются:
XQuery
Haskell — чистый функциональный. Назван в честь Хаскелла Карри.
LISP (Джон МакКарти, 1958, множество его потомков, наиболее современные из которых — Scheme и Common Lisp).
ML (Робин Милнер, 1979, из ныне используемых диалектов известны Standard ML и Objective CAML).
Miranda (Дэвид Тёрнер, 1985, который впоследствии дал развитие языку Haskell).
Erlang — (Joe Armstrong, 1986) функциональный язык с поддержкой процессов.
Nemerle — гибридный функционально/императивный язык.
F# - функциональный язык для платформы .NET
Итого даже в убогой русской википедии мы читаем:

> Haskell — чистый функциональный.

Что уже не слишком согласуется с

> Haskel - это не в чистом виде функциональное программирование.

Далее, если мы откроем нормальную википедию, то увидим:

> An early functional-flavored language was LISP

Не functional, и уж тем более не "чистая линия". functional-flavored. Типа "чай с запахом клубники".

Никто не спорит, LISP - вещь неплохая, но... говорить, что это - функциональный язык - неверно категорически. LISP мультипарадигменный, чем и силён.
Помимо функционального программирования в Haskell присутствует еще и парадигма императивного программирования. В противном случае, зная как вычислять нельзя будет что-то вычислить конкретно. Та же парадигма присутствует и в LISP. Изначально парадигма императивного программирования была скрыта от программиста LISP-машиной. В дальнейшем ее сделали явной и особенно в этом помог Emacs. В отличии от Haskel, который изначально допускает включение в текст не только ассемблерных вставок. Иначе нельзя было бы организовывать на Haskell работу с графикой и событиями, с X11.

LISP - это первый язык функционального программирования. Т.е., язык, реализующий не только парадигму императивного программирования, но еще и парадигму функционального программирования. В отличии от FORTRAN, который является чистым языком императивного (инструктивного) программирования.

> Не functional, и уж тем более не "чистая линия". functional-flavored. Типа "чай с запахом клубники".
Это Вы говорите с позиций сегодняшнего дня. Я же просил почитать работы самого Маккарти 50-60-х годов. Там все очень хорошо разложено по полкам. Функциональное программирование в чистом виде в принципе возможно, но оно никак не сможет себя проявить без императива.
> Помимо функционального программирования в Haskell присутствует еще и парадигма императивного программирования.

Покажете?

> В отличии от Haskel, который изначально допускает включение в текст не только ассемблерных вставок.

Чего-чего??? Haskell допускает включение ассемблерных вставок???

> Это Вы говорите с позиций сегодняшнего дня.

Вообще-то мы разговариваем сегодня.

> Функциональное программирование в чистом виде в принципе возможно, но оно никак не сможет себя проявить без императива.

Вообще-то это бред.
> Покажете?
Императивное программирование - технология программирования, характеризующаяся принципом последовательного изменения состояния вычислителя пошаговым образом. В основе технологии лежит машина Тьюринга-Поста.

Когда пишут программу на языке функционального программирования, то порядок ввода-вывод по идее не должен иметь иметь значения. Иначе придется отслеживать состояние компьютера как машины Тьюринга-Поста. А это уже императив в чистом виде. ;-)) Вы все-таки Маккарти почитайте. Очень советую.

Функция в математике не может изменить вызывающее её окружение и запомнить результаты своей работы, а только предоставляет результат вычисления функции. Программирование с использованием математического понятия функции вызывает некоторые трудности, поэтому функциональные языки, в той или иной степени предоставляют и императивные возможности.
> > Покажете?
> Императивное программирование - бла-бла-бла

То есть, не покажете. Ясно.
Например, инструкции impot и export. И еще инструкции работы со стеком. Это чистый императив.
О, классно. А инструкции работы со стеком в хаскеле - покажете?
> Почитайте работы Маккарти, создателя LISP-а.

Видел статью МакКарти, где он прямо говорил, что лямбда-исчисление так и не понял.