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.
Feu que Queue sigui instance de la classe Functor.
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).
Feu que Queue sigui instance de la classe Applicative.
Feu que Queue sigui instance de la classe Monad.
Feu una funció
kfilter::(p -> Bool) -> Queue p -> Queue p que
selecciona tots els elements que satisfan la propietat donada.
Cada funció i instanciació valen 20 punts.
Input
fmap (+1) $ Queue [1,2] [4, 3]
Output
Queue [2,3] [5,4]
Input
translation 1 $ Queue [1,2] [4, 3]
Output
Queue [2,3] [5,4]
Input
Queue [(+2),(*2)] [] <*> Queue [1,2] [4, 3]
Output
Queue [3,4,5,6,2,4,6,8] []
Input
Queue [1,2] [4, 3] >>= \x -> return $ x + 1
Output
Queue [2,3,4,5] []
Input
kfilter odd $ Queue [1,2] [4, 3]
Output
Queue [1,3] []