eine Reihe von Einschränkungen typeclass Gegeben:Wie kann ich herausfinden, welche (konkreten) Typen eine Reihe von Klassenbeschränkungen erfüllen?
{-# LANGUAGE ConstraintKinds, MultiParamTypeClasses #-}
import Data.Array.Unboxed(Ix,IArray,UArray)
type IntLike a = (Ord a, Num a, Enum a, Show a, Ix a, IArray UArray a)
Wie kann ich herausfinden, welche Arten erfüllen IntLike
, das heißt alle erwähnten Einschränkungen gemeinsam?
Ich kann die Informationen Puzzle zusammen benötigt vom Ausgang des :info
Befehl des GHCI, und dann meine Arbeit Doppelprüf telefonisch unter (oder mit GHCI typecheck)
isIntLike :: IntLike -> Bool
isIntLike = const True
bei verschiedenen Arten, z.B. .
Gibt es eine Möglichkeit, ghci dazu zu bringen, das für mich zu tun?
Ich bin derzeit an konkreten Typen interessiert, hätte aber nichts dagegen, eine allgemeinere Lösung zu haben, die auch clevere Sachen mit vereinheitlichenden Kontexten macht!
Sie können dies mit Vorlage haskell tun: 'main = print $ (" "Show >> = stringE. Show)". Dies funktioniert bei Typ-Synonymen nicht - stattdessen gibt REIFY den AST zurück, der das Typ-Synonym selbst darstellt, ohne es zu erweitern. Sie können nach Typ-Synonymen suchen, bei denen es sich um Constraints handelt, die Constraints, aus denen der Typ Synonym besteht, extrahieren und diese '' weiter vereinheitlichen. – user2407038
Richtig, das scheint alle Informationen zu enthalten, die ich brauche, um die Kreuzung zu nehmen, danke! Ich werde, was ich kann, aber ich muss sagen, dass Hacking GHCi scheint fast praktischer :-) – yatima2975
@ user2407038 können Sie diesen Kommentar in eine Antwort zu verwandeln, wie ich tseems auf die Frage geantwortet habe? – sclv