Salve, data una lista di interi in f# o ocaml, come posso trasformarla in una lista di elementi di tipo float?
inoltre con quale funzione posso calcolare la funzione n-esima di un numero?
grazie
Salve, data una lista di interi in f# o ocaml, come posso trasformarla in una lista di elementi di tipo float?
inoltre con quale funzione posso calcolare la funzione n-esima di un numero?
grazie
Per entrambi
Non ho capito cosa intendi per calcolare l'ennesima funzionecodice:let to_float_list = List.map float
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
Grazie per la risposta, non capisco però cosa intendi per list.map float.. List è nome lista e .map float sono funzioni già note?
scusa volevo dire la radice n-esima.. Perchè per la quadrata è sqrt ma per una qualsiasi radice n?
grazie mille
Quella è una definizione di funzione. Puoi applicarla così
Per le radici ennesime ti basta evevare a 1/ncodice:to_float_list [1;2;3;4;5]
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
Ciao, l' ambiente di sviluppo mi dice che il codice let nomefunzione lista= to_float_list lista;; non è corretto perchè non esiste la funzione to_float_list...
come mai?
Perché non l'hai definita. L'ho definita sopra.
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
ok ho capito.. ultima cosa. io ho questo esempio da svolgere, data una lista di interi, calcolare le tre medie con risultato float..
tutto è corretto, ma mi da errore la lista che ti ho messo in grassetto, in quanto dice che il tipo non è corrispondente, previsto float list ma specificato int list.. cosa devo fare??
let to_float_list = List.map float;;
let rec conta (l:float list) :float = match to_float_list l with
[] -> 0.
|x::xs -> 1. + conta xs;;
let rec somma (l:float list) :float = match to_float_list l with
[] -> 0.
|x::xs -> x + somma xs;;
let rec prodotto (l:float list) :float = match to_float_list l with
[] ->1.
|x::xs -> x* prodotto xs ;;
let rec reciproci (l:float list) : float = match to_float_list 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) = ( media_aritmetica l , media_geometrica l , media_armonica l );;
conta somma prodotto e reciproci prendono int list e internamente trasformano in float list (per come hai implementato tu). La dichiarazione invece tenta di forzare un float list, quando in realtà passi un int list.
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
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