Cua II X13179


Statement
 

pdf   zip

html

Volem continuar amb el problema Cua existent en aquesta mateixa llista d’exercicis. En aquest exercici tenim les cues representades en la forma:

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

Es demanen els codis de diverses funcions. Seguiu el format dels exemples que es mostren a sota.

  1. Feu que Queue sigui instance 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 instance de la classe Monad. Per a resoldre aquest apartat, pot ser útil fer una operació que faci la unió de dos cues del mateix tipus.
  4. Feu, amb notació do, una funció kfilter::(p -> Bool) -> Queue p -> Queue p que selecciona tots els elements que satisfan la 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