Haskell correspondance de modèle de type

Est-il possible de faire quelque chose comme cela en haskell ?

data Fruits = Apple Int | Orange Int deriving (Eq, Show)

basket = [Apple 2, Orange 4]

from_basket t (x:basket) =
    case x of
        (t i) -> i
        _ -> from_basket t basket

Maintenant, je veux faire la "pomme" de la liste des fruits ( panier )

from_basket Apple basket

Sans motif explicite match

case x of
    Apple i -> ...
    Orange i -> ...
    _ ->
Semble être une presque copie exacte de stackoverflow.com/questions/4273702/type-comparison-in-haskell
Je ne pense pas que c'est presque exacte. Dans l'autre question que l'OP veut vérifier si une variable est d'un type (qui est décidé au moment de la compilation). Ici, la question est de savoir quel constructeur d'une constante de type a été invoquée (ce qui est décidé au moment de l'exécution).

OriginalL'auteur jgoday | 2011-04-29