Programación Funcional - Cifras y Letras en haskell

   
Vista:

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?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cifras y Letras en haskell

Publicado por Paloma (2 intervenciones) el 14/02/2010 20:53:51
Hola!!

Solo debia quitar el deriving Show de donde esta y solo hacer el instance... me respondo a mi misma por si alguien mas tenia la duda.

Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cifras y Letras en haskell

Publicado por arnau (2 intervenciones) el 10/07/2010 18:44:37
El problema es que tienes un "deriving (Show)" en la definición de Exp y luego tratas de reimplementarlo con "instance". Así que sólo tienes que quitar el "deriving (Show)"

Como referencia, una implementación en Python y Haskell (disclaimer, acabo de aprender Haskell):

http://code.google.com/p/tokland/source/browse/trunk/cifras/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cifras y Letras en haskell

Publicado por arnau (2 intervenciones) el 10/07/2010 18:51:48
Perdón, no había visto el mensaje anterior en el que decías que ya lo habías arreglado quitando el deriving. Una cosa, ¿podrías subir tu programa en algún repo público (i.e.github) para compartir implementaciones?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar