#+TITLE: Haskell Design Pattern in Clojure #+SUBTITLE: Some classical haskell tricks equivalent in Clojure #+AUTHOR: Yann Esposito #+EMAIL: yann@esposito.host #+DATE: [2019-11-07 Thu] #+KEYWORDS: programming #+DESCRIPTION: LISP to simulate Haskell #+OPTIONS: auto-id:t #+begin_notes TL;DR: Some clever Haskell trick can in fact be simulated quite efficiently with Clojure. #+end_notes * Monads :PROPERTIES: :CUSTOM_ID: monads :END: #+begin_src haskell fullName :: Maybe Text -> Maybe Text -> Maybe Text fullName firstName lastName = do x <- firstName y <- lastName result <- return (x <> y) ask :: IO (Maybe Text) ask = do l <- readLine return $ if null l then Nothing else Just l askName <- fullName <$> ask "What is your first name?" <*> ask "What is your last name?" #+end_src