Headline parser setup
This commit is contained in:
20
src/utils/fp.nim
Normal file
20
src/utils/fp.nim
Normal file
@@ -0,0 +1,20 @@
|
||||
import std/sugar
|
||||
import fp/maybe
|
||||
|
||||
proc findMaybe*[T](xs: seq[T], fn: T -> bool): Maybe[T] =
|
||||
for x in xs:
|
||||
if fn(x):
|
||||
return Just(x)
|
||||
return Nothing[T]()
|
||||
|
||||
proc findMaybeFn*[T, B](fns: seq[T {.nimcall.} -> Maybe[B]], val: T): Maybe[B] =
|
||||
for fn in fns:
|
||||
let res = fn(val)
|
||||
if res.isDefined():
|
||||
return res
|
||||
return Nothing[B]()
|
||||
|
||||
when isMainModule:
|
||||
echo @[
|
||||
(x: int) => (if x == 2: Just("foo") else: Nothing[string]()),
|
||||
].findMaybeFn(2)
|
||||
Reference in New Issue
Block a user