Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    8

    OCAML O F# Conversione di tipo per le liste

    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

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Per entrambi
    codice:
     let to_float_list = List.map float
    Non ho capito cosa intendi per calcolare l'ennesima funzione
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    8
    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

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quella è una definizione di funzione. Puoi applicarla così
    codice:
    to_float_list [1;2;3;4;5]
    Per le radici ennesime ti basta evevare a 1/n
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    8
    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?

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Perché non l'hai definita. L'ho definita sopra.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    8
    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 );;

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    8
    in parole povere cosa dovrei modificare contando che necessariamente l' input deve essere int list e il risultato float?

  10. #10
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    (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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.