Pages: [1]   Go Down
Print
Author Topic: Esercizio: coppialist non funziona  (Read 701 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Ocelot92
Apprendista Forumista
**
Offline Offline

Posts: 301



« on: 05-04-2016, 22:53:44 »

Ho notato che l'esercizio fatto a lezione coppials/coppialist ha qualcosa che non va (ecco perchè ero inquieto e inquietante). Ovvero la soluzione proposta a lezione:
Code:
coppials (x:xs) p q  | (p x) = (x: first, second )
                     | (q x) = (first, x:second )
                     | otherwise = (first, second)
    where (first,second)= coppials xs p q
non funziona nel caso un elemento soddisfi entrambi i predicati. Verrà messo soltanto nella prima lista.
Ex: se passo
Code:
coppials [2,3] even (==2)
([2],[])
Quando invece dovrebbe tornare ([2], [2]). Prossimamente proporrò una correzione.

Ricordo: la funzione deve prendere una lista e 2 predicati e tornare una tupla fatta da 2 liste, una con gli elementi che soddisfano il primo predicato e una con gli elementi che soddisfano il secondo predicato. Il tutto senza richiamare altre funzioni (ma quelle di haskell si possono usare? Altrimenti la soluzione con fst e snd non andava neppure, oltre a soffrire dello stesso problema di quella di sopra).
« Last Edit: 05-04-2016, 23:11:28 by Ocelot92 » Logged

I'm happy to tell you all that...
((λf.λx.f(f(x))) (λy.y^2)) (5)  = 5^4

"Si ma dillo che bisogna cliccare APPLY per crearle le partizioni…" - cit. Utente dopo aver seguito un How-To... .-.
rondey
Matricola
*
Offline Offline

Posts: 74


« Reply #1 on: 06-04-2016, 09:11:21 »

Bella osservazione!
La soluzione perciò sarà:
Code:
coppials [] p q = ([], [])

coppials (x:xs) p q  | (p x) && (q x) = (x: first, x:second )
                     | (p x) = (x: first, second )
                     | (q x) = (first, x:second )
                     | otherwise = (first, second)
    where (first,second)= coppials xs p q
« Last Edit: 06-04-2016, 09:21:19 by rondey » Logged
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 2.622



WWW
« Reply #2 on: 06-04-2016, 10:11:32 »

Bene. Bravi!

Un salutone
FB
Logged
Franco Barbanera
Moderator
Forumista Eroico
*****
Offline Offline

Posts: 2.622



WWW
« Reply #3 on: 07-04-2016, 15:59:03 »

Quote
(ecco perchè ero inquieto e inquietante)

Con la bandiera dei pirati che hai come avatar, l'inquietudine mi rimane.... 
Logged
Pages: [1]   Go Up
Print
Jump to: