vak: (Default)
[personal profile] vak
В середине 80-х лучшим языком для символьного дифференцирования считался Рефал.
Diff  {
      (e.t) e.1 '+' e.2 = <Diff (e.t) e.1> '+' <Diff (e.t) e.2>;
      (e.t) e.1 '-' e.2 = <Diff (e.t) e.1> '-' <Diff (e.t) e.2>;
      (e.t) e.1 '*' e.2 = (e1 '*' <Diff (e.t) e.2>
                          '+' <Diff (e.t) e.1> '*' e.2);
      (e.t) (e.1)       = ( <Diff (e.t) e.1> );
      (e.t) e.t         = '1';
      (e.t) e.1         = '0';
}
Нынче Хаскель поинтереснее будет:
Dif a = D a (Dif a)

dConst :: Num a => a -> Dif a
dConst x0 = D x0 dZero
 
dZero :: Num a => Dif a
dZero = D 0 dZero

instance Num a => Num (Dif a) where
  fromInteger               = dConst . fromInteger
  D x0 x’ + D y0 y’         = D (x0 + y0) (x’ + y’)
  D x0 x’ - D y0 y’         = D (x0 - y0) (x’ - y’)
  x@(D x0 x’) * y@(D y0 y’) = D (x0 * y0) (x’ * y + x * y’)

Date: 2008-07-23 14:56 (UTC)
From: [identity profile] vadim-kataev.livejournal.com
хаскель очень хороший и интересный язык

Date: 2008-07-24 22:09 (UTC)
From: [identity profile] termos.livejournal.com
Эх, а вот мне он как-то не дается ;-). Не могу про себя сказать, что такой уж я полный болван и тупица -- лет десять как минимум программирую начиная с ассемблеров и форта и далее со всеми остановками практически по всем современным (и не очень) языкам, платформам и операционным системам (вплоть до Lua в реализации для Lego NXT). На жизнь давно зарабатываю finance софтом на С++. Это не декларация "какой я крутой", нет. Я просто хочу сказать, что я далеко, так сказать, не новичок. Хотя надо признать, что "мои" языки на 99% иперативные, поэтому есть "привычка" к императиному мышлению. Так вот, уже года так 2-3 с периодичностью каждые месяца 3-4 делаю заходы на Хаскель (так как везде пишут, типа отличный современный функциональный язык с "облегченным" и "понятным" в отличие от Lisp-подобных языков). И каждый раз через 10-15 минут попыток въехать в язык и написать что-нибудь посложнее hello world я успешно скисаю, так как ну нихера не понятно. Так будто авторы сделали все, что усложнить понимания языка. И книжки разные у меня есть по Хаскелю, и в интернете много читал. Вот из последнего - http://rsdn.ru/article/haskell/haskell_part1.xml и http://rsdn.ru/article/haskell/haskell_part2.xml

Хотя в Лисп-подобные языки типа Коммон-Лиспа, Схема и т.д. - спокойно въежается и пришется без всяких проблем.

В общем - мож посоветуете - как приобщиться таки к модному фунциональному знанию в виде Хаскеля? ;-) Или я уже полностью безнадежен... ;-)

Date: 2008-07-24 22:35 (UTC)
From: [identity profile] vadim-kataev.livejournal.com
ну я в общем то начинал с Пролога, а по поводу Хаскеля мне вот эта книга очень помогла:
http://www.amazon.com/Haskell-Logic-Maths-Programming-Computing/dp/0954300696/ref=pd_bbs_sr_3?ie=UTF8&s=books&qid=1216938892&sr=8-3

Date: 2008-07-25 12:02 (UTC)
From: [identity profile] termos.livejournal.com
Эх, есть у меня это книжка Душкина ;-). Именно над ней я и медитирую во время приступов желания постичь Хаскель. Но пока видимо я еще не нашел правильной травы, к моему сожалению. ;-)