вторник, 26 июня 2012 г.

Haskell, WinCHCi - суперпозиция

Мучился с суперпозицией в Хаскель. Почему-то та, что указана в учебниках: через точку не работала.
sp1 x =  s2x . sx1 x
 Проект упорно не хотел компилироваться. Однако стоило вспомнить, что "Хаскель прост для записи математических формул", и тут же спасли родные скобочки: ещё один плюс функциональных языков - это использование такой логики, по крайней мере на начальной - главное чтобы это не стало проблемой в будущем. Кстати, так же не хотело компилится без явного указания типов функций. Пришлось их дописать.
Обновление: при использовании скобочек всё-таки можно не указывать явно тип функций, код становится в два раза короче :) .
Код, который я писал был чисто обучающим:
s2x x = 2 * x
sx1 x = x + 1
sp1 x = s2x (sx1 x)
sp2 x = sx1 (s2x x)

четверг, 21 июня 2012 г.

Как я познакомился с Haskell

Не так давно, захотелось мне посмотреть, что из себя представляют функциональные языки. Один из первых, на которые я наткнулся был Хаскель. Почитал, посмотрел примеры - мне понравилось.
Вот сегодня собрался, зашёл в гугл набрал "Haskell IDE", попал на http://www.haskell.org, скачал оттуда среду GHCi.
Из примеров и вики учебника я понял немного синтаксис, который достаточно простой (намного проще чем в знакомых мне Фортране и С). Решил начать с того, чем меня мучители на последней лабе - вычисление интегралов. Всё оказалось довольно просто и мило, вот метод прямоугольников для функции sin(x):
integralx h a b = sum points * h where points = map (\x->sin x) [a,a+h..b]
Вот эта строчка и есть весь код. Собственно, пока что мне нравится. Осталось только придумать, чего бы хотелось на нём написать - просто так тыкаться не интересно.