Powiedzmy mam dwa types:Czy można porównać dwa typy, jeśli można je przypisać z drugiego?
t1 <- [t| (Functor f) => (a -> b) -> f a -> f b |]
t2 <- [t| (Int -> Char) -> [Int] -> [Char] |]
Czy to możliwe do ustalenia w Template Haskell że wyrazem t1
może być również t2
? (Bez wdrożenia typu unifikacji siebie.)
Jeśli jest to możliwe, musisz użyć nowego szablonu szablonu, ale nic o tym nie wiem. Prawdopodobnie mógłbyś stworzyć coś w rodzaju kompilacji, generując martwy kod, taki jak: a = (undefined :: (Functor f) => (a -> b) -> f a -> f b); b :: (Int -> Char) -> [Int] -> [Char]; b = a' – jberryman