in parole povere cosa dovrei modificare contando che necessariamente l' input deve essere int list e il risultato float?
in parole povere cosa dovrei modificare contando che necessariamente l' input deve essere int list e il risultato float?
(l:float list) in (l:int list) o anche solo in l
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
Scherzetto, non ho prestato abbastanza attenzione perché facevo altro.codice:let to_float_list = List.map float;; let rec conta (l:float list) :float = match l with [] -> 0. |x::xs -> 1. +. conta xs;; let rec somma (l:float list) :float = match l with [] -> 0. |x::xs -> x +. somma xs;; let rec prodotto (l:float list) :float = match l with [] ->1. |x::xs -> x*. prodotto xs ;; let rec reciproci (l:float list) : float = match l with [] -> 0. |x::xs -> 1./.x +. reciproci xs;; let media_aritmetica l = somma l /. conta l;; let media_geometrica l= (prodotto l)**( 1./.(conta l));; let media_armonica l= ( conta l)**2. /.(reciproci l);; let rec means (l:int list) : (float * float * float) = let l' = to_float_list l in ( media_aritmetica l' , media_geometrica l' , media_armonica l');;
Ultima modifica di Scara95; 03-11-2015 a 20:13
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
problema persiste!
let to_float_list = List.map float;;
let rec conta l = match to_float_list l with
[] -> 0.
|x::xs -> 1. + conta xs;;
let rec somma l = match to_float_list l with
[] -> 0.
|x::xs -> x + somma xs;;
let rec prodotto l = match to_float_list l with
[] ->1.
|x::xs -> x* prodotto xs ;;
let rec reciproci l = match to_float_list l with
[] -> 0.
|x::xs -> 1./x + reciproci xs;;
let media_aritmetica l :float = somma l / conta l;;
let media_geometrica l :float= (prodotto l)**( 1./(conta l));;
let media_armonica l :float= ( conta l)**2. /(reciproci l);;
let means (l:int list) : (float * float * float) = ( media_aritmetica l , media_geometrica l , media_armonica l );;