Ich finde eine Menge Dinge, die ich selbst zusammengerüttelt habe, die überhaupt nützlich scheinen, haben eine Standardimplementierung, von der ich gerade nichts wusste, also war neugierig, wenn irgendjemand sagen könnte, dass sie diese Art von früher verwendetem Ding gesehen haben :Ist diese Haskell-Funktion als anderer Name bekannt/implementiert?
es hat eine einstellige Funktion nimmt und es wird klappen, bis ein Prädikat durch Alternative gewählt wird, dann gibt sie das Ergebnis des Prädikats:
until :: (Monad m, Alternative m) => (a -> m a) -> (a -> m c) -> a -> m c
f `until` p = \a -> (f >=> (p `altF` (until f p))) a
where f1 `altF` f2 = \a -> f1 a <|> f2 a
ich den Namen erkennen, ein Vorspiel Kollision ist, werde ich wahrscheinlich Nennen Sie es etwas anderes, aber ich dachte, ich würde zuerst sehen, ob es bereits eine ähnliche Funktionalität in einer Standardbibliothek gibt, von der ich nichts weiß.
Ich denke auch, ich bin neugierig, wenn die kompositorische Alternative, die ich geschrieben habe, woanders definiert ist oder wenn etwas von dieser Funktionalität irrtümlich erscheint. Aber der Kernpunkt meiner Frage ist, ist dies anderswo implementiert oder ist etwas sehr ähnlich umgesetzt woanders
Möglicherweise möchten Sie 'MonadPlus' anstelle der kombinierten 'Monad'- und' Alternative'-Einschränkungen verwenden. –
@pelotom Sie können Alternative in Bezug auf MonadPlus definieren? Ich war mir nicht bewusst, ich nahm meine Unterschrift direkt aus GHCi –
Sie definieren verschiedene APIs, aber führen ähnliche Rollen aus ... 'Alternative':' Applicative' :: 'MonadPlus':' Monad'. –