Diferencia entre revisiones de «Primer Parcial 1er Cuat 2016 (Paradigmas)»

De Cuba-Wiki
(Página creada con «{{Back|Paradigmas de Lenguajes de Programación}} === Ejercicio 1 === a) foldfs :: b -> (Nombre -> b -> b) -> (Nombre -> b -> b -> b) -> Filesystem -> b foldfs fvacio fa...»)
 
 
Línea 21: Línea 21:
  arosetrees = foldfs [] (\s b -> (Rose s []) : b) (\s b1 b2 -> (Rose s b1):b2)
  arosetrees = foldfs [] (\s b -> (Rose s []) : b) (\s b1 b2 -> (Rose s b1):b2)
   
   
  arosetree :: Filsystem -> Rosetree Nombre
  arosetree :: Filesystem -> Rosetree Nombre
  arosetree = Rose '/' arosetrees
  arosetree = Rose '/' arosetrees



Revisión actual - 16:29 13 jul 2019

Plantilla:Back

Ejercicio 1[editar]

a)

foldfs :: b -> (Nombre -> b -> b) -> (Nombre -> b -> b -> b) -> Filesystem -> b
foldfs fvacio farchivo fcarpeta fs =
    case fs of vacio -> fvacio
               archivo n fs -> farchivo n (rec fs)
               carpeta n fsc fss -> fcarpeta n (rec fsc) (rec fss)
                   where rec = foldfs fvacio farchivo fcarpeta

b)

listado :: [Nombre]
listado = foldfs [] (:) (\s l1 l2 -> s:l2)

c)

rutasdearchivo :: Nombre -> Filesystem -> [Nombre]
rutasdearchivo n = foldfs [] (\s p -> if s==n then '/':n++p else p) (\c p1 p2 -> (map (\s -> '/':c++s) p1) ++ p2)

d)

arosetrees :: Filesystem -> [Rosetree Nombre]
arosetrees = foldfs [] (\s b -> (Rose s []) : b) (\s b1 b2 -> (Rose s b1):b2)

arosetree :: Filesystem -> Rosetree Nombre
arosetree = Rose '/' arosetrees

Ejercicio 2[editar]

a)

b)