2009-01-05 4 views
3

J'ai un code de manipulation de données qui crache csv à la fin.Comment faire pour supprimer génériquement F # Unités de mesure

j'ai commencé à mettre à niveau pour ajouter des unités de mesure partout, mais j'ai maintenant un problème avec ma fonction csv:

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

(les paramètres sont fileName, tableau de colonnes, les en-têtes de colonne, séparateur)

Où j'ai précédemment envoyé [| s; x; y |] à WriteCSV, j'ai maintenant un problème, car je ne peux pas envoyer [| skm; xmm; ymm |].

J'ai essayé d'écrire une fonction pour supprimer génériquement des unités de mesure, mais cela ne fonctionne pas.

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

Mes questions sont les suivantes:

  • Pourquoi ça ne marche pas?
  • Peut-il être fait pour travailler?
  • Existe-t-il un autre moyen de résoudre ce problème particulier?

Répondre

7

Si j'ai correctement résolu votre problème, le lancer sur le flotteur «pur» supprime l'unité. Par exemple:

[<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> -> flotteur

+0

Excellent, merci. – Benjol

Questions connexes