Functional Design and Architecture (Examples in Haskell)