Domanda

Ho del codice di manipolazione dei dati che alla fine sputa CSV.

Ho iniziato a aggiornarlo per aggiungere unità di misura ovunque, ma ora ho un problema con la mia funzione CSV:

val WriteCSV : string -> 'a list array -> 'b list -> string -> unit

(i parametri sono fileName, array di colonne, intestazioni di colonna, separatore)

Dove in precedenza avevo inviato [| s; x; y |] a WriteCSV, ora ho un problema, perché non riesco a inviare [| skm; XMM; YMM |.]

Ho provato a scrivere una funzione per rimuovere genericamente unità di misura, ma non funziona.

let removeUnit (n:float<_>) = n/1.0<_>

Le mie domande sono:

  • Perché non funziona?
  • Può essere fatto funzionare?
  • C'è un altro modo per risolvere questo particolare problema?
È stato utile?

Soluzione

Se ho risolto il tuo problema, lanciandolo su " pure " float rimuove l'unità. Ad esempio:

[<Measure>] type m
[<Measure>] type km

let removeUnit (x:float<_>) =
    float x

let foo = removeUnit 2.6<m>
let foo2 = removeUnit 2.1<km>
  

val removeUnit: float < 'u > - gt &; float

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top