September 24th, 2011

glider

scalaz

Народ, объясните, пожалуйста, пользу от scalaz. Я уже давно размышляю над этим вопросом, а сегодня как раз попались слайды "Scalaz: Functional Programming in Scala" с Strange Loop 2011 (кстати да, рекомендую местный github репозиторий, который содержит почти все толки).

Меня действительно впечатляет внутренняя красота конструкций теории категории (тех, которые я понимаю, лол). Помню, какое наслаждение было читать про аппликативные функторы в Learn You a Haskell. Но, если честно, применимость в повседневной работе я вижу только для монад и то большей частью в виде компрехеншнов. Например, на мой вкус computational expressions из F# - прекрасная вещь. Ну да, листы это монады и каждый раз, когда я делаю flatMap, на самом деле я выполняю bind, но давайте будем серьезны, пожалуйста.

Но каждый раз, когда я вижу вещи вроде (((_: Int) + 1) |@| ((_: Int) * 2)) { _ |+| _ } у меня все внутри переворачивается - ну, в самом деле, где практичность. Например, (checkEmail(email) |@| checkPhone(phone)) { WebForm(name, _, _) } - из тех же слайдов - еще ничего так, хотя все равно весьма экстравагантно, но польза от вещей вроде предыдущего примера от меня ускользает. С другой стороны, в недавнем треде Тони Моррис затроллил чела, который обвинил scalaz в невнятности. Это порождает когнитивный диссонанс. Помогите разобраться.