Haskell - Cua (2) P50086


Statement
 

pdf   zip

html

Continuem el problema Haskell — Cua (1). En aquest problema tenim les cues representades en la forma

cua = Queue [2,8,5] [4,7]

Es demana el codi de diverses funcions i instanciacions. Seguiu el format dels exemples que es mostren als exemples.

  1. Feu que Queue sigui instància de la classe Functor. Per això implementeu la funció fmap que, donada una funció de tipus p -> q i un Queue d’elements de tipus p, retorna un Queue de tipus q resultant d’aplicar la funció a tots els elements de la cua.
  2. Feu una funció translation :: Num b => b -> Queue b -> Queue b que aplica una translació a tots els punts d’una cua (que serà el segon paràmetre).
  3. Feu que Queue sigui instància de la classe Monad. Per a resoldre aquest apartat, pot ser útil fer una operació que faci la unió de dues cues del mateix tipus.
  4. Feu, utilitzant la notació do, una funció kfilter :: (p -> Bool) -> Queue p -> Queue p que selecciona tots els elements d’una cua que satisfan una propietat donada.

Les dues funcions valen 50 punts.

Observació

Public test cases
  • Input

    let c = push 3 (push 2 (push 1 create))
    translation (-2) c
    

    Output

    Queue [] [1,0,-1]
    
  • Input

    let c = push 3 (push 2 (push 1 create))
    kfilter (>1) c
    

    Output

    Queue [2,3] []
    
  • Information
    Author
    Gerard Escudero
    Language
    Catalan
    Official solutions
    Haskell
    User solutions
    Haskell