Unità di misura

Una delle caratteristiche di F# di cui non troviamo corrispondenza in Visual Basic e in C# è quella delle “units-of-measure”, cioè delle unità di misura.

Nei calcoli scientifici è molto importante utilizzare le corrette unità di misura: per esempio, per una distanza si utilizzano i metri <m>, per una unità di tempo si potrebbero utilizzare i secondi <sec>, per una velocità i metri al secondo <m/sec>, mentre per un’accelerazione si utilizzano i metri al secondo al quadrato <m/sec^2>.

Un altro aspetto importante delle unità di misura è la possibilità di effettuare delle conversioni da un’unità di misura ad un’altra (per esempio da gradi Centigradi a gradi Fahrenheit) oppure da un’unità di misura a unità di misura più piccole o più grandi (da chilogrammi a grammi oppure a tonnellate).

Una unità di misura di dichiara come segue:

   1: [<Measure>] type m
   2: [<Measure>] type sec
   3: [<Measure>] type kg

poi si utilizza come segue:

   1: let distance = 1.0<m>    
   2: let time = 2.0<sec>    
   3: let speed = 2.0<m/sec>    
   4: let acceleration = 2.0<m/sec^2>    
   5: let force = 5.0<kg m/sec^2>   

Come potete vedere, abbiamo dichiarato le unità di misura m (metri), sec (secondi) e kg (chilogrammi) e poi abbiamo dichiarato degli identificatori come la distanza (espressa in metri), un tempo (espresso in secondi), una velocità (espressa in metri al secondo), un’accelerazione (espressa in metri al secondo quadrato) e una forza (chilogrammi per metro al secondo quadrato).

Naturalmente è possibile definire anche delle unità di misura derivate, come nel seguente esempio:

   1: [<Measure>] type N = m/sec^2
   2: let force1 = 5.0<kg m/sec^2>    
   3: let force2 = 5.0<N>

Il vantaggio di dichiarare una unità di misura è il fatto che il compilatore è in grado di verificare tutte le espressioni utilizzate e segnalare quelle che sono incongruenti. In sostanza non è possibile “sommare mele e pere”, perché sono due entità diverse. Si possono sommare metri a metri, chilogrammi a chilogrammi, non è possibile invece sommare metri a chilogrammi perché è un calcolo che non ha alcun senso.

Alcuni articoli utili su questo argomento sono i seguenti (in lingua inglese):

http://msdn.microsoft.com/it-it/library/dd233243.aspx
http://fsharpforfunandprofit.com/posts/units-of-measure/
http://davefancher.com/2012/11/18/f-more-on-units-of-measure/
http://trelford.com/blog/post/Runtime-Units-of-Measure-for-F.aspx

Pubblicato il 17 luglio 2015 su Novità. Aggiungi ai preferiti il collegamento . Lascia un commento.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: