Programación Funcional - funcion fold para tipos que no son listas

 
Vista:

funcion fold para tipos que no son listas

Publicado por duran (1 intervención) el 28/11/2007 19:10:24
Hola, tengo el siguiente problema sobre la funcion FOLD de orden superior.
Se me presenta una definicion de tipo de datos como sigue:

data AlgExp a = AlgExp
{litI :: Int -> a
,litB :: Bool -> a
,add :: a -> a -> a
,and :: a -> a -> a
,ifte : : a -> a -> a -> a
}

osea, literales enteros, booleanos, expresion add, expresion and y expresion IfThenElse.

Pues bien, mi labor consiste en completar una funcion fold para el tipo de las expresiones.
Es decir

foldExp :: AlgExp a -> Exp -> a
foldExp alg (LitI i) = litI alg i
foldExp alg (LitB b) = litB alg b
foldExp alg (add exp1 exp2)= ???
foldExp alg (and exp1 exp2)= ???
foldExp alg (ifte exp1 exp2 exp3)= ???

..mi pregunta es, como podria hacer el fold para las expresiones de tipo and exp1 exp2 ,add exp1 exp2, y ifte exp1 exp2 exp3? Supongo que debe ser algo bastante obvio, pero por mucho que doy vueltas no caigo en que deberia hacer.

Muchisimas gracias!!!
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