Препратки към четива във връзка с някои езици за функционално
програмиране. Обърнете внимание най-вече на това, което се
отнася до Хаскел. Другото е само информативно.

------------------------------------------------------------

Най-напред за Haskell.

Главната отправна точка за информация, свързана с него, е

http://www.haskell.org/

(1) Препоръчвам ви да прочетете най-напред

http://www.haskell.org/aboutHaskell.html ,

където се говори _за_ езика и за ф. пр. изобщо, без да се
описва съдържанието му.

----

(2) Други кратки и леки уводни четива са

http://www.di.uminho.pt/afp98/PAPERS/Tutorial.ps (14 стр.)

и

,,Beginning Haskell``

За последното идете на

http://www.ibm.com/developerworks/

и там търсете по думата ,,haskell``: четивото се появява
в началото на списъка от публикации, който ще видите в резултат
на търсенето.

----

(3) После е добре да прочетете

http://www.md.chalmers.se/~rjmh/Papers/whyfp.html

където се аргументират достойнствата на функционалния стил.
Примерите в статията са на Miranda, но в случая практически няма
разлика от Haskell. Тази статия е ,,класика`` на ф. пр.

----

(4) След това прочетете ,,The Gentle Introduction to Haskell``:

http://www.haskell.org/tutorial/

-- 60 или повече страници, които ще ви дадат възможност да се
запознаете с почти всички важни елементи на езика. На първо време
обаче не се задълбочавайте в частта за т. нар. монади. Този
материал е сложен и е достатъчно да го прегледате само за
информация.

----

(5) Следното е справочник за основните библиотечни функции
на Haskell (с някои малки пропуски) в удобен формат с взаимни
препратки (HTML):

http://www.cs.uu.nl/~afie/haskell/tourofprelude.html .

Съдържа определенията на функциите и кратки обяснения за тях.
Познаването на библиотечните функции е много важно за ползването
на езика (повече отколкото в други езици), а повечето от тях са и
чудесни примери за изучаване.

----

(6) Още едно четиво, доста по-дълго от горните -- нещо като малък
учебник по Haskell (125 стр.):

http://www.isi.edu/~hdaume/htut/tutorial.pdf .

----

(7) За подробно изучаване и сериозно ползване на езика трябва да
се сдобиете с двата документа, които са формалното му описание:
,,The Haskell 98`` Report и ,,Haskell 98 Library Report``. Има ги
и събрани в едно. Мястото е:

http://www.haskell.org/definition/

----

(8) Освен споменатите, още доста други четива ще намерите на

http://www.haskell.org/bookshelf/ .

----

(9) Накрая, може да намерите и два мои кратки материала по Haskell:

http://www.math.bas.bg/softeng/bantchev/misc/fpp.ps ,
http://www.math.bas.bg/softeng/bantchev/misc/simi02.ps .

Първото е статия с няколко примера, а второто -- текст с много
примери и къси коментари към тях (използвах го през 2002 в
шестчасова лекция пред способни гимназисти).

----

Ако имате компютър на разположение и решите да опитате сами
програмирането на Haskell, може да ползвате едно от двете:

-- GHC: компилатор и интерпретатор (компилаторът използва
компилатор за C, тъй като превежда най-напред в този език);

-- Hugs: само интерпретатор, но за начинаещи малко по-удобен от
GHC.

И двата продукта се разпространяват безплатно и са реализирани
както за истински операционни системи, така и за M$ Windows. Ще
ги намерите пак чрез главната страница www.haskell.org (в раздела
,,Haskell Compilers and Interpreters``).

------------------------------------------------------------

Сега за ML. Точното име на езика всъщност е Standard ML или късо
SML.

Могат да се посочат две основни места с подробна информация за
езика. Едното е FAQ:

http://isc.faqs.org/faqs/meta-lang-faq/ .

Другото е сайтът на един от най-добрите компилатори и
интерпретатори за SML -- SML/NJ:

http://cm.bell-labs.com/cm/cs/what/smlnj ,

където се намира и описанието на стандартната библиотека на SML.

На същия сайт в раздела ,,Tutorials`` ще намерите препратки към
две много добри ръководства по езика: това на R. Harper и това на
S. Gilmore. И двете обаче са големи, с обем на книги, така че
може да започнете с 22-страничния увод в езика ,,Tips for Computer
Scientists on Standard ML`` от M. Tofte. Последното е писано
отдавна, но е много подходящо за начално запознаване, а и
цитираните примери само на няколко места (в частта за модули) и
съвсем незначително се отличават от съвременния синтаксис на
езика.

Друго интересно, а и много практически насочено ръководство е

http://web.access.net.au/felixadv/files/output/book/

(ръководство за програмиране в Unix (Linux) със Standard ML).
Този текст е единственият известен на мен учебник, в който курс
с толкова практическа насоченост се води на модерен функционален
език, и единственият, в който преподаването на такъв език става
чрез решаване на съвсем конкретни, ,,ежедневни`` задачи.

Освен споменатия компилатор SML/NJ, от многото налични мога да
препоръчам още следните: MLton, Moscow ML и Poly/ML. Има ги и за
нормална операционна система, и за Windows. Безплатни са и
препратки към съответните страници ще намерите в FAQ-а.

------------------------------------------------------------

За информация по Haskell и ML може да четете също писанията по
дискусионните групи съответно comp.lang.functional и
comp.lang.ml. Всъщност първата по принцип е предназначена за
обсъждания изобщо по функционално програмиране, но преобладават
материали за Haskell.

Най-лесният начин да четете (а и да пишете в) архивите на групите
е чрез http://groups.google.com . Точните адреси са съответно

http://groups.google.com/groups?group=comp.lang.functional

и

http://groups.google.com/groups?group=comp.lang.ml .

------------------------------------------------------------

Езикът Clean е сходен с Haskell, но заслужава внимание и сам по
себе си. Неговата страница е

www.cs.kun.nl/~clean/ .

------------------------------------------------------------

Езикът Joy е представител на съвсем различен от дотук изброените
езици стил на функционално програмиране: т. нар. конкатенативен
или композиционен стил. Това е експериментален език с много
компактна реализация. Страницата му е

http://www.latrobe.edu.au/philosophy/phimvt/joy.html

Има две дискусионни групи по конкатенативния стил:

http://blog.gmane.org/gmane.comp.lang.concatenative
http://groups.yahoo.com/group/concatenative

Последно модифициране: събота, 12 ноември 2011, 17:38