Grundsätzlich, wenn {-# LANGUAGE PolymorphicKinds, ConstraintKinds, TypeFamilies #-}
(und mehr, falls erforderlich) gegeben ist, arbeitet der Operator (~)
type-level mit Ausdrücken auf Typ-Ebene vom Typ Constraint
? Ich habe versucht, die Antwort zu googeln, aber hatte kein Glück.
Ja, das ist möglich. Da Typen vom Typ Constraint
endliche Mengen von Beschränkungen des atomaren Typs sind, können Sie ihre Gleichheit sehr einfach testen.
Die Erweiterung PolyKinds
ist jedoch nicht notwendig. Außerdem gibt es sehr wenige Situationen, in denen diese Art der Gleichheit tatsächlich nützlich wäre, weil ich keine praktische Möglichkeit sehe, polymorphe Bedingungen als Argumente c1
, c2
bis Bla
zu übergeben, so dass die Constraint-Gleichheit a wäre Tautologie in jedem Fall ( Show ~ Show
hier):
Tags und Links haskell polymorphism type-constraints