Новая версия hastache

Октябрь 09, 2011, 11:34

Вы­ло­жил но­вую вер­сию шаб­ло­ни­за­то­ра has­tache. До­ба­вил воз­мож­ность ге­не­ри­ро­вать кон­текст из ти­пов со­дер­жа­щих функ­ции типа String -> String и ByteString -> ByteString. Смот­ри­те при­мер ис­поль­зо­ва­ния кому ин­те­рес­но.

Hastache — реализация Mustache для Haskell

Март 28, 2011, 07:00

До­вел до ума и вы­ло­жил в open source свою ре­а­ли­за­ция шаб­ло­ни­за­то­ра Mus­tache, на ко­то­рой, в част­но­сти, кру­тит­ся сайт с ко­то­ро­го вы это сей­час чи­та­е­те.

Взять мож­но либо на GitHub, либо из Hack­ageDB:

(далее...)

Шаблоны Mustache

Март 25, 2011, 08:05

Mus­tache — биб­лио­те­ка ми­ни­ма­ли­стич­ных шаб­ло­нов из­на­чаль­но ре­а­ли­зо­ван­ная для Ruby Кри­сом Ван­стра­сом (меж­ду про­чим CEO и один из ос­но­ва­те­лей GitHub). Ми­ни­ма­лизм Mus­tache вы­ра­жа­ет­ся в том, что там нет управ­ля­ю­щих кон­струк­ций вро­де if и else. Цик­лов там тоже нет, есть толь­ко теги. Неко­то­рые теги за­ме­ня­ют­ся про­сты­ми зна­че­ни­я­ми, неко­то­рые за­ме­ня­ют­ся се­ри­я­ми зна­че­ний, по­каз со­дер­жи­мо­го дру­гих за­ви­сит от опре­де­лен­ных усло­вий. Несмот­ря на весь ас­ке­тизм сво­е­го син­так­си­са, Mus­tache яв­ля­ет­ся мощ­ным и пол­но­цен­ным движ­ком шаб­ло­нов.

Вдох­но­ви­те­ля­ми Mus­tache по­слу­жи­ли ctem­plate и et.

Сей­час су­ще­ству­ют ре­а­ли­за­ции Mus­tache для огром­но­го ко­ли­че­ства язы­ков. Необ­хо­ди­мо учи­ты­вать что на раз­ных язы­ках ню­ан­сы ра­бо­ты бу­дут немно­го от­ли­чат­ся. Я сде­лаю об­зор без при­вяз­ки к кон­крет­но­му язы­ку, од­на­ко дан­ные для при­ме­ров буду пи­сать на JSON, т. к. ду­маю он всем по­ня­тен, и кро­ме все­го про­че­го ис­поль­зу­ет­ся в до­ку­мен­та­ции к Mus­tache.

(далее...)

Бинарная сериализация в Haskell: использование библиотеки derive

Март 04, 2011, 19:50

В рам­ках борь­бы с ве­ло­си­пе­диз­мом, я про­сто обя­зан на­пи­сать про биб­лио­те­ку de­rive. Слу­жит она для ав­то­ма­ти­че­ской ге­не­ра­ции ин­стан­сов раз­ных клас­сов (смот­ри­те до­ку­мен­та­цию ка­ких имен­но, там мно­го). Меня эта биб­лио­те­ка за­ин­те­ре­со­ва­ла, пре­жде все­го, как ге­не­ра­тор для Data.Bi­na­ry, ко­то­рая очень удоб­на как быст­рый би­нар­ный се­ри­а­ли­за­тор над Data.ByteString.Lazy. У себя на сай­те я ис­поль­зую Data.Bi­na­ry для ке­ши­ро­ва­ния дан­ных. De­rive уме­ет ге­не­ри­ро­вать как обыч­ный код внут­ри .hs фай­лов, так и со­зда­вать ин­стан­сы во вре­мя ком­пи­ля­ции с по­мо­щью Tem­plate Haskell.

(далее...)

Новый движок моего блога (на Haskell)

Февраль 28, 2011, 16:03

Пе­ре­пи­сал свой блог — те­перь это Haskell! За­хо­ди­те вы ко мне на сайт, по­чи­тать это со­об­ще­ние, а в это вре­мя, на да­ле­ком сер­ве­ре, лямб­да функ­ции за­мы­ка­ют­ся и ре­ду­ци­ру­ют­ся, мо­на­ды одна в дру­гую транс­фор­ми­ру­ют­ся, сан­ки фор­сят­ся и про­ис­хо­дит раз­ная дру­гая ма­гия.

Пока немно­го те­зис­но что, как и по­че­му, часть тем буду в бу­ду­щем раз­во­ра­чи­вать:

(далее...)

Бинарная сериализация в Haskell

Октябрь 06, 2009, 06:05

Для би­нар­ной се­ри­а­ли­за­ции в Haskell су­ще­ству­ет мо­дуль Data.Bi­na­ry. Без по­боч­ных эф­фек­тов (де)се­ри­а­ли­зу­ет в/из Data.ByteString.Lazy. Он пока не идет в по­став­ке с GHC и его нуж­но ру­ка­ми ста­вить из hack­age. Ис­поль­зо­вать его не про­сто, а очень про­сто:

(далее...)

Haskell в реальной жизни

Октябрь 05, 2007, 02:32

Итак! Этот дол­го­ждан­ный мо­мент всё-таки на­сту­пил! Я по­лу­чил свой пер­вый опыт Haskell в ком­мер­че­ском про­грам­ми­ро­ва­нии!

Рас­ска­зы­ваю как дело было:

(далее...)

Ханойские Башни

Август 10, 2007, 02:30

Дав­нень­ко я ни­че­го про Haskell не пи­сал... Ис­прав­ля­юсь.

За­да­чу про Ха­ной­ские Баш­ни (Tow­ers of Hanoi) при­ду­мал фран­цуз­ский ма­те­ма­тик Эду­ард Люка в 1883 году. Су­ще­ству­ет ле­ген­да об ин­дий­ском хра­ме в ко­то­ром есть боль­шая ком­на­та с тре­мя ал­маз­ны­ми стол­би­ка­ми на ко­то­рые на­ни­за­но 64 зо­ло­тых дис­ка. И бог Бра­ма по­ве­лел пе­ре­ло­жить дис­ки с од­но­го стол­би­ка на дру­гой, и ко­гда эта за­да­ча бу­дет ре­ше­на наш мир раз­ру­шит­ся...

Усло­вия го­ло­во­лом­ки: есть три стол­би­ка, на 1-й на­ни­за­на пи­ра­ми­да из n дис­ков (вни­зу са­мый боль­шой диск, над ним чуть мень­ше и так да­лее), необ­хо­ди­мо пе­ре­ме­стить эту пи­ра­ми­ду на 3-й стол­бик, пе­ре­ме­щая по од­но­му дис­ку, при этом со­блю­дая усло­вие что нель­зя класть боль­ший диск на мень­ший.

Это клас­си­че­ская за­да­ча на тему "ре­кур­сия" и я ду­маю все кто хоть как-то свя­зан с про­грам­ми­ро­ва­ни­ем её ре­ша­ли. Ре­ша­ет­ся она очень про­сто:

(далее...)

Сергей Лымарь © 2005-2014, Все права защищены.