non capisco perchè ti arrabbi tanto, era solo un' indicazione sul codice dovesse servire a qualcuno
non capisco perchè ti arrabbi tanto, era solo un' indicazione sul codice dovesse servire a qualcuno
Non mi sono arrabbiato, è che non ti aiuta ad imparare un linguaggio chiedere ad altri di scrivere del codice per te.
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
let rec sums ((s::_) as ss) xs =
match xs with
| []->[]
| [x] -> (s+x) :: ss
| (x::xs) -> sums ((s+x)::ss) xs;;
dovendo semplificare per fare ad esempio la somma iterata e basta
es. [1,2,3,4,5] -> [0,1,3,6,10,15]
per che motivo questo codice solleva un eccezione?
Come la chiami? che errore ti da?
In ogni casocodice:let rec sums ((s::_) as ss) xs = match xs with | []->[] | [x] -> (s+x) :: ss | (x::xs) -> sums ((s+x)::ss) xs;;
E', in tutti i casi escluso (sums ss []), equivalente acodice:let rec sums ((s::_) as ss) xs = match xs with | []->ss | (x::xs) -> sums ((s+x)::ss) xs;;
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
molto gentile,
mi sorge ancora un dubbio, per fare ad esempio, duplicare se un elemento è maggiore del precedente,
si può utilizzare un pattern del tipo a::b::resto e controllare se b è > di a?
Puoi fare tutto quello che vuoi con il pattern matching...
Stai comunque sempre attento ai casi base e alle limitazioni del dominio
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
daccordo,
quindi quel frammento di codice è corretto?
"mi sorge ancora un dubbio, per fare ad esempio, duplicare se un elemento è maggiore del precedente,
si può utilizzare un pattern del tipo a::b::resto e controllare se b è > di a?"