Domanda

Quando si importano numeri da un file CSV, è necessario convertirli in float con unità.

Attualmente lo faccio con una funzione incorporata:

data |> List.map float |> List.map (fun n -> n * 1.0<m>)

Ma mi chiedo se esiste un modo più elegante per farlo - o devo creare il mio modulo 'unità' con funzioni di conversione?

Ciò che sarebbe davvero bello sarebbe qualcosa del genere, ma dubito che sia possibile ...

data |> List.map float |> List.map lift<m>

Questo è l'opposto della mia domanda precedente ( Come per rimuovere genericamente le unità di misura F # ).

AGGIORNAMENTO: per le unità fatte in casa, ho provato questo, che funziona bene:

[<Measure>]
type km = 
    static member lift (v:float) = v * 1.0<km>

data |> List.map float |> List.map km.lift

oppure, seguendo la domanda in questa risposta

data |> List.map (float >> km.lift)

Altri suggerimenti

C'è qualche motivo per cui devi mappare due volte? Cosa c'è di sbagliato in questo:

data |> List.map (fun x -> (float x) * 1.0<m>)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top