?

Log in

No account? Create an account
ru_declarative [entries|archive|friends|userinfo]
ru_declarative

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Журнал «Практика функционального программирования» [Jul. 20th, 2009|09:57 pm]
ru_declarative

ru_declarative

[lionet]
Вашему вниманию представляется первый выпуск журнала, посвящённого практике функционального и декларативного программирования. Мы ставим своей задачей помочь вам сориентироваться в инструментарии функционального программирования, в используемых в функциональной парадигме подходах к декомпозиции задач, способах упрощения программирования и снижения количества дефектов в разрабатываемых системах.

http://fprog.ru/

Первый номер журнала посвящён погружению в предмет функционального программирования. Вводные статьи Сергея Зефирова «Лень бояться» и Романа Душкина «Функции и функциональный подход» затрагивают философию парадигм программирования. Более практически направленная часть журнала представлена статьёй Евгения Кирпичёва «Изменяемое состояние: опасности и борьба с ними», классифицирующей типы проблем, возникающих при небрежном использовании сущностей с изменяемым состоянием, и следующей за ней статьёй Дмитрия Астапова «Давно не брал я в руки шашек», на протяжении нескольких страниц раскрывающей подход проектирования «сверху вниз» на подробном примере написания игры в шашки на языке Haskell. Статья Дэна Пипони «Моноиды в Haskell и их использование» в переводе Кирилла Заборского простым языком обьясняет практическое применение моноидов для создания элегантных полиморфных алгоритмов. Номер завершается внушительным «Обзором литературы о функциональном программировании» Алексея Отта, содержащим множество ссылок на русскоязычную и англоязычную литературу по разным языкам и аспектам декларативного программирования.

Приятного чтения!
linkReply

Comments:
From: (Anonymous)
2009-07-21 08:14 am (UTC)
Спасибо, интересно почитать.
Но это
>При реализации на C++ типа enum {False, True, Unknown} оператор && для
>о будет вести себя одинаково плохо вне зависимости от степени нашей
> уверенноти в результатах сравнения—он всегда будет вычислять оба операнда.
бред
Не нужно переопределять оператор && Нужно определить operator bool для этого типа. И тогда усё будет.
За переопределение оператора && вообще надо по пальцам киянкой бить,имхо, - и именно из того, что меняется логика вычислений операндов.
(Reply) (Thread)
From: gds
2009-07-21 08:33 am (UTC)
а вот хочется реализовать логику как-то так, чтобы
T && x = x, F && x = F, U && x = x,
T || x = T, F || x = x, U || x = x.
Как это сделать на плюсах так, чтобы в случае F && x и T || x не вычислять x, но чтобы U && x и U || x работали нормально?
(Reply) (Parent) (Thread)
From: (Anonymous)
2009-07-21 08:53 am (UTC)
идеального способа, конечно нет, но можно использовать
1 способ: вместо A||B писать что-то вроде (A>U)||B
2 способ: вместо A||B писать !(!А&&!B) и возвращать 0 при unknown
(Reply) (Parent) (Thread)
[User Picture]From: ssart
2009-07-21 09:05 am (UTC)
Хороший пример, да... 8))
(Reply) (Parent) (Thread)
[User Picture]From: thesz
2009-07-21 09:08 am (UTC)
Иными словами, мы приводим левый операнд к нулю нашей алгебраической структуры и, зная, что это нуль, сообщаем об этом. Будет работать в подавляющем большинстве случаев, я даже не могу придумать, где не будет.

Это, однако, не ответ на то, как сделать свой собственный оператор && для произвольного типа данных с сохранением семантики.
(Reply) (Parent) (Thread)
[User Picture]From: mr_aleph
2009-07-21 11:33 am (UTC)
Это, однако, не ответ на то, как сделать свой собственный оператор && для произвольного типа данных с сохранением семантики


Поскольку вопрос этот исключительно умозрительный и не сопровождающийся никакой практической необходимостью (за ним видна лишь целью "попинать убогий С++"), то на него следует дать исключительно умозрительный ответ --- можно сделать правку в компиляторе.
(Reply) (Parent) (Thread)
[User Picture]From: asviraspossible
2009-07-21 12:59 pm (UTC)
:)) Вспомнил вопрос Сергея про MixFix синтаксис в GHC. Но вообще я думаю, что убогий Си++ надо пинать и чем чаще, тем лучше.
(Reply) (Parent) (Thread)
[User Picture]From: mr_aleph
2009-07-21 01:08 pm (UTC)
толку то с попинывания?
(Reply) (Parent) (Thread)
[User Picture]From: thesz
2009-07-21 03:38 pm (UTC)

(узнанный мной новый старый мем отлично подходит)

Ибо воистину! ;)

(здесь это для нагнетания пафоса и потому, что воистину, надо пинать;)
(Reply) (Parent) (Thread)
[User Picture]From: bik_top
2009-07-22 06:32 am (UTC)

For the great justice

Я бы даже сказал, во имя Великой Справедливости.
(Reply) (Parent) (Thread)