まず、次Either
のように生成される s の(無限の) リストがあります。
x :: A
...
f :: A -> Either B A
...
xs :: [Either B A]
xs = iterate (>>=f) (Right x)
リストにはいくつかRight
の s (常に有限数) が含まれ、同じLeft
値が繰り返されます。私が必要とするのは、すべてのRight
s とLeft
それらの後に 1 つを取ることです。この特定のケースでは、たとえば関数を変更することでも実行できますが、最善の一般的な方法にも興味があります。