Ich finde oft, dass ich reguläre Funktionen in eine "gebundene" Sequenz einfügen möchte. Wie in diesem erfundenen Beispiel:
%Vor% Ich muss die Liftfunktion lift :: (a -> b) -> a -> m b
definieren, damit dies funktioniert. Das Problem ist, dass ich keine solche Funktion kenne und Hoogle scheint das auch nicht zu sein. Ich finde das merkwürdig, da das für mich total Sinn macht.
Nun, es gibt wahrscheinlich andere Möglichkeiten, dies zu erreichen, aber ich mag die Art und Weise, wie ich mit Point-Free Style Code die Linie in einem Durchgang scannen kann, um herauszufinden, was passiert.
%Vor%Meine Frage läuft darauf hinaus: Fehle ich etwas oder wie kommt es, dass es keine Funktion wie Heben gibt? Meine Erfahrung in Haskell ist immer noch sehr begrenzt, also gehe ich davon aus, dass die meisten Menschen das auf andere Weise lösen. Kann mir jemand den idiomatischen Weg erklären, dies zu lösen?
Es gibt drei idiomatische Möglichkeiten.
Verwenden Sie keine Bindung; Verwenden Sie stattdessen den ersten Treffer Ihrer Hoogle-Suche:
%Vor% Es gibt eine Vielzahl alternativer Schreibweisen von liftM
, z. B. fmap
oder (<$>)
.
Fügen Sie die von Ihnen definierte Funktion lift
ein:
Verwenden Sie die Monad-Gesetze, um die letzten beiden Bindungen in Option 2 zu fusionieren:
%Vor%Tags und Links haskell