Alors que de façon abstraite il n'y a qu'une seule valeur qui a le type "a", en bas, il existe une variété d'interprétations possibles à l'exécution.
myExpression = myExpression
Cela ne s'arrêtera jamais.
myExpression = undefined
Cela (lors de l'utilisation GHC) print "* Exception: Prelude.undefined"
myExpression = error "Hello!
Ce imprimera "* Exception: Bonjour!" Le comportement de cette version de bas dépend des bibliothèques que vous avez importées.
Puisque vous posez des questions sur un type "générique", vous pourriez vouloir dire le type de choses qui peuvent utilement contenir n'importe quelle valeur.Dans ce cas, jetez un oeil à Data.Dynamic, ce qui vous permet de convertir tout ce qui a une représentation en mémoire à une valeur de type "Dynamique". Plus tard, lorsque vous utilisez une valeur de type "Dynamique", vous pouvez essayer de le transformer en un type plus spécifique avec lequel vous pouvez réellement faire quelque chose d'utile.
Une meilleure question pourrait être "pourquoi voudriez-vous faire cela?" Il pourrait être utile dans un langage orienté objet, mais dans Haskell ce ne serait pas très utile du tout. – MathematicalOrchid
À ce moment-là, j'étais curieux de savoir si cela pouvait être réalisé ou non, mais maintenant je peux vraiment voir l'utilité de l'expression du bas et sa relation avec les fonctions partielles, les fonctions strictes et non strictes et la stratégie d'évaluation. – acrespo