t(a, b) :: (any() -> FE.Result.t(a, b))
one_of([a], b) :: t(a, b) when a: var, b: var
predicate((a -> boolean()), b) :: t(a, b) when a: var, b: var