Вообще пиздец канеш. Половина кода -- ебля с разными кодировками-перекодировками, причем руками делается в основном (toString, toLazyByteString и т.п.). Вторая половина -- обработка ошибок (т.к. нет стек трейсов, желательно иметь понятные строки с описанием где и что не так, иначе бы тупо фигачил "все в either").
@polecat да не, чувак просто задвигает альтернативную идею рантаймовых эксплицитных value-level тайпклассов. И там-то как раз очень удобно получается иметь несколько инстансов, скажем, Monoid, для твоего типа Hui: это просто несколько разных значений (словарей (рекордов функций)). И везде, где ты используешь методы етого тайпкласса, mempty и mappend, ты вместо того чтобы запрятывать инстансдикт под очередной newtype, просто передаёшь етот дикт (рядышком после значения типа непосредственно Hui) эксплицитно.
не, ну почитай блог, там немного совсем и не сложно.
@polecat Ну да, компилятор же за тебя не может сказать, когда ты хочешь list, а когда corovan.
Также прошу обратить внимание на mono-traversable и OverloadedLists, может снять множество getCList-хуйни.
ле // да, тяжко читается ваще
@kb агась
@polecat на самом деле очень просто, палю: http://www.haskellforall.com/2012/05/scrap-your-type-classes.html
// tl;dr пиши свой собственный typeclass dictionary @ передавай эксплицитно по значению
@kb норм
@kb ле, топ норм
@polecat да не, чувак просто задвигает альтернативную идею рантаймовых эксплицитных value-level тайпклассов. И там-то как раз очень удобно получается иметь несколько инстансов, скажем,
Monoid
, для твоего типаHui
: это просто несколько разных значений (словарей (рекордов функций)). И везде, где ты используешь методы етого тайпкласса,mempty
иmappend
, ты вместо того чтобы запрятывать инстансдикт под очереднойnewtype
, просто передаёшь етот дикт (рядышком после значения типа непосредственноHui
) эксплицитно.не, ну почитай блог, там немного совсем и не сложно.
@polecat пжжи, пжжи, чо за syb-то
@polecat вот да, всё о чём ты здесь пишешь, решается value-level тайпклассами.
@polecat не читал, дунно