Est-ce que quelqu'un a eu une chance de creuser dans comment F# Units of Measure travail? S'agit-il simplement de chicaneries basées sur des types, ou y a-t-il des types de CLR qui se cachent sous qui pourraient (potentiellement) être utilisés à partir d'autres langages .net? Cela fonctionnera-t-il pour n'importe quelle unité numérique, ou est-il limité aux valeurs en virgule flottante (qu'est-ce que tous les exemples utilisent)?Comment fonctionnent les unités de mesure F #?
Répondre
Selon un response sur le prochain article de blog lié, ils sont un mécanisme purement statique dans le compilateur F #. Il n'y a donc pas de représentation CLR des données des unités.
Il n'est pas tout à fait clair si cela fonctionne actuellement avec des types non flottants, mais du point de vue du système de type, cela est théoriquement possible.
Voir le dernier article de blog par Andrew Kennedy (dans la réponse ci-dessous), UOM sont disponibles pour tout type numérique, ainsi que des types composites. – Benjol
Le meilleur endroit (et je pense que c'est officiel) pour le savoir est sur le blog d'Andrew Kennedy.
Voici les publications pertinentes (en cours).
- Units of Measure in F#: Part One, Introducing Units
- Units of Measure in F#: Part Two, Unit Conversions
- Units of Measure in F#: Part Three, Generic Units
- Units of Measure in F#: Part Four, Parameterized Types
Comme je l'ai dit dans le poste que votre answerer mentionné, cela est certainement quelque chose que vous ne pouvez pas faire en C# (bien que je souhaite que vous pourriez).
Jetez un oeil à la calculatrice Frink et au langage de programmation Frink. –