Skip to content

Instantly share code, notes, and snippets.

@lucamolteni
Forked from raichoo/summer.hs
Created October 7, 2016 09:12
Show Gist options
  • Save lucamolteni/07783ad8e1c2eb5b69bbc26635d726f8 to your computer and use it in GitHub Desktop.
Save lucamolteni/07783ad8e1c2eb5b69bbc26635d726f8 to your computer and use it in GitHub Desktop.
Haskell Example
module Assign where
import Data.IORef
mkSummer :: IO (Int -> Int -> IO Int)
mkSummer = do
ref <- newIORef 0
return $ \x y -> do
val <- readIORef ref
let ret = val + x + y
writeIORef ref ret
return ret
@lucamolteni
Copy link
Author

module Foo where

import Control.Monad (void)
import Control.Monad.Trans.State
import Control.Monad.IO.Class (liftIO)

sum' :: Monad m => Int -> Int -> StateT Int m Int
sum' x y = do
  c <- get

  let res = c + x + y

  put res

  return res

main :: IO ()
main = void $ flip runStateT 0 $ do
  sum' 5 5 >>= liftIO . print
  sum' 5 5 >>= liftIO . print

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment