Skip to content

Instantly share code, notes, and snippets.

@JonCanning
Created October 10, 2014 15:38
Show Gist options
  • Select an option

  • Save JonCanning/8bdbf3ed6de49058a1df to your computer and use it in GitHub Desktop.

Select an option

Save JonCanning/8bdbf3ed6de49058a1df to your computer and use it in GitHub Desktop.
Writer monad
let (>>=) (i1, s1) k =
let i2, s2 = k i1
(i2, sprintf "%s\r%s" s1 s2)
let half i =
let half = i / 2
(half, sprintf "half of %i is %i" i half)
half 8 >>= half >>= half |> snd |> printfn "%s"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment