Wenn Kontexte auf eine Art Signatur zu schreiben, normalerweise würde ich Haskell Multiple Kontexte - currying?
f :: (Enum a, Ord a) => a -> a
aber durch schiere pures Glück etwas wie
tun fand ich, dass diese kompiliert und scheint identisch zu arbeiten, zumindest auf GHC 7.8:f :: Enum a => Ord a => a -> a
Was sind die theoretischen oder praktischen Unterschiede zwischen den beiden? Ist der zweite weniger orthodox? Die Haskell report scheint die zweite Form nicht zu erwähnen, und ich habe sie nie irgendwo benutzt gesehen. Related question.
SPJ präsentierte einmal einen Vortrag, in dem er erklärte, welche Einschränkungen kompilieren. https://www.youtube.com/watch?v=6COvD8oynmI - Kurz gesagt, sie sind Funktionsargumente in ihren eigenen. – AJFarmar