functional programming haskell software design c++ best practices monad design patterns software development software architecture monads free monads python solid software transactional memory lens comonad devday programming books fp final tagless parsing lsp demetra's law lambdansk recruitment hr github metaprogramming templates optional expected ranges game stm Мифы функциональное программирование myths game of life hakell idiom zipper игра Амбер монады функциональное программир дизайн линзы
Tout plus