Headline parser setup

This commit is contained in:
Florian Schroedl
2022-01-20 17:00:00 +01:00
parent 300b165da9
commit 0d19b846f2
2 changed files with 99 additions and 1 deletions

20
src/utils/fp.nim Normal file
View 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)