Erstes Posting auf diesem Tag und ich unternehme immer noch vorläufige Schritte mit der Sprache, aber ich habe einige dynamische FP Hintergrund, so dass ich schon ein paar Konzepte vertraut bin.Komposition mit zweideutigen Typen
Ich habe eine isZero
Funktion definiert.
isZero :: Int -> Bool
isZero x = x == 0
Und ich versuche es mit der eine isMultiple
Funktion erstellen mod
Funktion zu komponieren.
isMultiple = isZero . mod
Dies resultiert jedoch in einer Typübereinstimmung, da es die Signatur des erwartet a0 -> Int
und mod
sein a0 -> a0 -> a0
ist (vorausgesetzt, dies ist, da sie mehrere Genauigkeiten unterstützt).
Ich habe festgestellt, dass, wenn ich sie nur explizit komponieren (und eine Typ-Signatur zur Verfügung stellen), dann gibt es keine Probleme.
isMultiple :: Int -> Int -> Bool
isMultiple x n = isZero $ mod x n
Gibt es eine Möglichkeit compose Funktionen mit mehrdeutigen Typen zu verwenden, um den .
Operator?
'\ x -> isZero. mod x = \ x -> (.) istZero (mod x) = (.) isZero. mod' – user2407038