Monads/Maybe monad: Difference between revisions

Realize in F#
(Added Lua code)
(Realize in F#)
Line 369:
</lang>
 
=={{header|F_Sharp|F#}}==
<lang fsharp>
// Options. Nigel Galloway: February 26th., 2020
let fN n g = Seq.tryFind n g //(('a -> bool) -> seq<'a> -> 'a option)
printfn "fN returned %A" (fN (fun n->if n="a" then true else false) ["n";"i";"g";"e";"l"])
printfn "fN returned %A" (fN (fun n->if n="g" then true else false) ["n";"i";"g";"e";"l"])
match fN (fun n->if n=0 then true else false) [1;2;3;4;5] with
Some n->printfn "fN returned %A" n
|None ->printfn "Value not found"
match fN (fun n->if n=3 then true else false) [1;2;3;4;5] with
Some n->printfn "fN returned %A" n
|None ->printfn "Value not found"
let fG n=let a=["n";"i";"g";"e";"l"] in if n>=0 && n<4 then Some(a.[n]) else None //(int -> string option)
match fG 3 with
Some n->printfn "fG returned %A" n
|None ->printfn "Index out of range"
match fG 5 with
Some n->printfn "fG returned %A" n
|None ->printfn "Index out of range"
</lang>
{{out}}
<pre>
fN returned <null>
fN returned Some "g"
Value not found
fN returned 3
fG returned "e"
Index out of range
</pre>
=={{header|Factor}}==
Factor comes with an implementation of Haskell-style monads in the <code>monads</code> vocabulary.
2,171

edits