関数が定義されています
maybeToList :: (a -> Maybe a) -> a -> [a]
maybeToList f x = x : maybe [] (maybeToList f) (f x)
この機能は当たり前のように思えるので、標準ではないことが信じられません。いくつかのモジュールで定義されていますか (私はすでに Data.Maybe をチェックしています)?
あなたの関数は、次のような特殊な形式であるため、標準ライブラリにはありません。
unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
unfoldr f b =
case f b of
Just (a,new_b) -> a : unfoldr f new_b
Nothing -> []
とは言っても、リストの要素がシード値の並びと同じになるケースはよくあることだし、justunfoldr
やその他の標準関数で書くと下手なので、標準ライブラリにもない理由がわからない.