Per esempio:Dove e perché dovrei usare schemi extra vuoti?
intersectBy : (a -> a -> Bool) -> List a -> List a -> List a
intersectBy _ [] _ = []
intersectBy _ _ [] = []
intersectBy eq xs ys = [x | x <- xs, any (eq x) ys]
Ci sono modelli aggiuntivi per []
e sembra come essi sono utilizzati in Haskell Data.List
ma che tipo di ottimizzazione è quello? E dove sta la differenza con Idris qui?
Chiedo perché ho sentito che "renderà il ragionamento più difficile" e la persona che mi ha detto che non ha avuto il tempo di spiegarlo pienamente.
Dubito che riesca a capirlo facendo "ridurre la prova" della funzione.
maggio qualcuno mi spieghi la politica di schemi extra qui da posizioni di Haskell e Idris così sarò in grado di capire e vedere la differenza.
Bello, ha senso ora! Ma in che modo aggiungeresti un caso speciale che copre 'intersect (==) [0 ..] [2]'? – Sibi
perché '_ [] _' sembra ridondante? – Cynede
@Heather perché '[x | x <- xs, ...] 'valuta immediatamente' [] 'quando' xs' è vuoto. – chi