Skip to content

Instantly share code, notes, and snippets.

@nojaf
Created August 9, 2017 13:57
Show Gist options
  • Save nojaf/aa8b191e2f21c291fa58e80076f3c92f to your computer and use it in GitHub Desktop.
Save nojaf/aa8b191e2f21c291fa58e80076f3c92f to your computer and use it in GitHub Desktop.
Computation Expressions question
// Learn more about F# at http://fsharp.org
// See the 'F# Tutorial' project for more help.
open System
let toInt a =
match (Int32.TryParse(a)) with
| (true, x) -> Some x
| (false, _) -> None
type MaybeBuilder() =
member this.Bind(x, f) =
printfn "x: %A, f: %A" x f
match x with
| None -> None
| Some a -> f a
member this.Return(x) =
Some x
let maybe = new MaybeBuilder()
[<EntryPoint>]
let main argv =
printfn "%A" argv
let parsed =
maybe {
let! head = Array.tryHead argv
let! v = head |> toInt
return v
}
printfn "parsed is %A" parsed
0 // return an integer exit code
@jovaneyck
Copy link

@nojaf correct!

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