Ich spielte herum mit einer einfachen Funktion für jemand anderes Stack-Überlauf Frage, und schrieb den Ausdruck (mit Applicative ((>) t), vielleicht?):Vervielfältigung ausbauen -
f a x ++ f a y
Offensichtlich ist dies die Der beste Weg, um diesen Ausdruck im wirklichen Leben zu schreiben, vorausgesetzt, ich habe sowieso alle diese Variablen im Umfang, aber ich sah die Verdoppelung von f a
, und dachte "Hey, vielleicht können Sie das mit der Applicative Instanz für Funktionen entfernen". Ich beendete mit:
liftA2 (++) (flip f x) (flip f y) a
was einfach schrecklich ist. Gibt es eine bessere Möglichkeit, diese Duplizierung zu entfernen? Offensichtlich konnte ich die Duplizierung auch entfernen, indem Sie f a
an etwas in einer where
-Klausel binden, aber das war als eine Übung bei der Verwendung von integrierten Funktionen gedacht.
ich diese Antwort mögen, obwohl! Ich glaube, ich suchte nicht wirklich nach anwendungsspezifischen Antworten, sondern nach Möglichkeiten, die Standardbibliothek zu verwenden, um die Duplizierung zu entfernen. – amalloy