Cifras y Letras en haskell
Publicado por Paloma (2 intervenciones) el 14/02/2010 20:43:50
Hola!!
Estoy haciendo una practiquilla en haskell... y me he quedado atascada. Consiste en dada una lista de numeros y otra cifra adicional hallar una expresión infija con la lista de enteros y los operadores (+,-,*,div) cuyo valor se acerque a la cifra adicional.
He creado estos tipos de datos:
type Operador = Int -> Int -> Int
data Exp = Cif Int | Op Exp Operador Exp
Cuando he ido a probar mi programa me indica que no encuentra funcion show para Exp y he tratado de arreglarlo asi:
type Operador = Int -> Int -> Int
data Exp = Cif Int | Op Exp Operador Exp
deriving Show
instance Show Exp where
show (Cif x) = x
show (Op x op y) = "(" ++ show x ++ showOp op ++ show y ++ ")"
showOp :: Operador -> String
showOp (*) = "*"
showOp (+) = "+"
showOp (-) = "-"
showOp (div) = "div"
Pero me da otro error:
(Señala la linea donde aparece el deriving Show) Overlapping instances for class "Show"
*** This instance : Show Exp
*** Overlaps with : Show Exp
*** Common instance : Show Exp
No se como arreglarlo o que estoy haciendo mal, alguien me puede ayudar?
Estoy haciendo una practiquilla en haskell... y me he quedado atascada. Consiste en dada una lista de numeros y otra cifra adicional hallar una expresión infija con la lista de enteros y los operadores (+,-,*,div) cuyo valor se acerque a la cifra adicional.
He creado estos tipos de datos:
type Operador = Int -> Int -> Int
data Exp = Cif Int | Op Exp Operador Exp
Cuando he ido a probar mi programa me indica que no encuentra funcion show para Exp y he tratado de arreglarlo asi:
type Operador = Int -> Int -> Int
data Exp = Cif Int | Op Exp Operador Exp
deriving Show
instance Show Exp where
show (Cif x) = x
show (Op x op y) = "(" ++ show x ++ showOp op ++ show y ++ ")"
showOp :: Operador -> String
showOp (*) = "*"
showOp (+) = "+"
showOp (-) = "-"
showOp (div) = "div"
Pero me da otro error:
(Señala la linea donde aparece el deriving Show) Overlapping instances for class "Show"
*** This instance : Show Exp
*** Overlaps with : Show Exp
*** Common instance : Show Exp
No se como arreglarlo o que estoy haciendo mal, alguien me puede ayudar?
Valora esta pregunta
0