juan_gandhi: (VP)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2014-03-07 10:58 am
Entry tags:

the right stuff

presentation: http://2013.flatmap.no/blakstad.html
unfiltered library: https://github.com/unfiltered/unfiltered/blob/master/directives/README.markdown

So, the idea is, have all this http run monadic; that includes checking conditions and throwing back all those 404s, 451, 500...

[identity profile] mikkim08.livejournal.com 2014-03-08 11:22 am (UTC)(link)
Спасибо, очень интересно. Я тоже хочу писать как-нибудь вот так. Но есть вопросы:

Как я понял:

1) Result он что-то вроде Either. Это монадная обёртка для результат вычисления. Success это обёртка для успешно вычисленого значения, а Failure -- для кода ошибки.

2) Directive это монадная обёртка для функции HttpRequest => Result, похожая на монаду Reader.

Примеры Directives:

request = req:HttpRequest => Success(req)
method = request(req).map(_.method)
inputStream = request(req).map(_.inputStream)
и т.д.

Благодаря тому, что Result это монада, эти самые функции-"директивы" (Directive) можно "композировать" с помощью >=> , и это хорошо.

Теперь вопросы:

- Зачем нужно придумывать специальную монаду Result, если уже есть Either ?
- С какой целью Directive сам сделан монадой ?
- Если Directive это монада, то почему не использовать монаду Reader ?
Edited 2014-03-08 11:45 (UTC)