6 votes

Est-il possible d'afficher les résultats de l'application d'une fonction de la famille de types Haskell ?

Par exemple, si j'ai ces types bizarres :

{-# LANGUAGE TypeFamilies #-}
type family WeirdFamily a
type instance WeirdFamily () = Int
type instance WeirdFamily (a, b) = (a, WeirdFamily b)

Puis-je afficher (par exemple dans GHCi) le résultat de WeirdFamily (Bool, (Char, ())) en tapant quelque chose comme :

:t WeirdFamily (Bool, (Char, ()))

dans GHCi ?

7voto

snak Points 3072

Utilisez kind! .

:kind! WeirdFamily (Bool, (Char, ()))
WeirdFamily (Bool, (Char, ())) :: *
= (Bool, (Char, Int))

1voto

David Points 187

J'ai donc trouvé une réponse. Tapez ceci dans GHCi :

f :: WeirdFamily (Bool, (Char, ())); f = undefined
:t f

donne f :: (Bool, (Char, Int))

Mais j'ai l'impression qu'il devrait y avoir un moyen plus "propre". En existe-t-il une ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X