Ad esempio avendo
l1=[1,2,3,4,5]
duplicare in una lista
l2=[15,1,3,6,10]
nel primo elemento la somma di tutti gli elementi della lista e nel resto la somma avanzando di posizione
Grazie in anticipo
Ad esempio avendo
l1=[1,2,3,4,5]
duplicare in una lista
l2=[15,1,3,6,10]
nel primo elemento la somma di tutti gli elementi della lista e nel resto la somma avanzando di posizione
Grazie in anticipo
Perché vuoi il 15 per primo?
Haskell:codice:sums = scanl1 (+) -- sums [1, 2, 3, 4, 5] -> [1, 3, 6, 10, 15] sums xs = last ss : init ss where ss = scan1 (+) xs -- sums [1, 2, 3, 4, 5] -> [15, 1, 3, 6, 10] -- meno efficiente sums (x:xs) = sums' [x] xs where sums' ss@(s:_) [x] = (s+x) : reverse ss sums' ss@(s:_) (x:xs) = sums' ((s+x):ss) xs -- a mano
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
intanto,
grazie mille
che la somma totale come primo elemento lo richiede l' esercizio
la sintassi è Haskell?
e in Ocaml?
E in ocaml fai esattamente la stessa cosa. Devi solo cambiare sintassi, non mi sembra un gran problema...
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
certamente, era però come esempio di sintassi di Ocaml visto che non utilizzo il linguaggio
no no,solo per questo "a::b::resto"
mi scuso se riapro questa discussione dopo un pò di tempo,
dopo aver creato alcuni esempi positivamente con altre funzioni, sono tornato su questo codice
al momento dell' invocazione restituisce :codice:let rec sums ((s::_) as ss) xs = match xs with | []->[] | [x] -> (s+x) :: ss | (x::xs) -> sums ((s+x)::ss) xs;;
Warning 8: this pattern-matching is not exhaustive.
Here is an example of a value that is not matched:
[]