J'ai l'extrait suivant, qui compile bien, mais quand j'essaie de l'exécuter, je reçois une erreur de cmdargs. *** Exception: System.Console.CmdArgs.Implicit, unexpected flag (edit): Main.Sel
. Cela fonctionne si je change le Sel en Int, mais dans mon cas d'utilisation réel, j'aimerais que l'application de type différencie les sélections de Ints.Haskell, cmdargs et newtypes
Je peux le réparer en utilisant Int avec cmdargs et après avoir vérifié les arguments qui le transforment en Sel, mais je pense que c'est une solution sous-optimale.
{-# LANGUAGE DeriveDataTypeable, GeneralizedNewtypeDeriving #-}
import System.Console.CmdArgs
import System.Console.CmdArgs.Default
newtype Sel = Sel Int deriving (Num, Real, Integral, Show, Read, Data, Typeable, Enum, Eq, Ord, Default)
data Foo = Foo {
edit :: Sel
} deriving (Show, Read, Data, Typeable)
foo = Foo {
edit = def
}
main = do
a <- cmdArgs foo
print a