Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Pierrick's Blog

.Net "full power"

F# nouvelle CTP (1.9.6)

Que dire de cette CTP, si ce n' est qu' elle est mieux intégrée dans Visual Studio.

image

intellisense

image

de plus intégrable dans une usine de dev, puisque le projet est un projet MSBuild.

 

Mais LA fonctionnalité de cette CTP, c'est les unités de mesures.

#light

//heure
[<Measure>] type h
//km
[<Measure>] type km

j'ai défini un type unité 'h' pour les heures, et un type unité km pour les kilomètres,  je peux maintenant écrire ceci :

let Paris_Marseille = 780.0<km>
let VMax_autorise = 130.0<km/h>

ensuite il suffit d'utiliser ces unités de mesures

image

nbKm est de type <km>. ces unité de mesures sont très bien pour éviter de mélanger les choux et les carottes. Il est possible de définir des fonctions fortement typées, les appels seront contrôlés à la compilation.

let ToKm_h(x) = x * 1.0<km/h> 

let VFR_Max = ToKm_h(240.0)

let ParisMarseille (speed:float<km/h>) = 
  printfn
"Paris-Marseille à %.2f km/h se fait en %.2f heure(s)" 
    <| float(speed) 
    <| float(Paris_Marseille / speed) 

ParisMarseille VMax_autorise
ParisMarseille VFR_Max
ParisMarseille 150.0<km>

la dernière ligne empêche toute compilation

 image

on peut aussi s' amuser avec des unités un peu plus proche de nous......

[<Measure>] type annee
[<Measure>]
type homme
[<Measure>]
type ah = annee / homme 

let heure_par_mois = 169.0<h>
let heure_par_an = 11.0 * heure_par_mois

let ToYear(x:float<h>) = (x / heure_par_an) * 1.0<annee>

let me = 1.0<homme>
let SpentTime(x:float<h>) = ToYear(x) / me

printfn
""
printfn "cet exemple a pris %f annee/homme " <| float(SpentTime(1.0<h>))

le fait de spécifier des unités, cela rend le code plus compréhensible.

au fait avec tout ça j' ai perdu combien d'années ??

image

Mais comment est-ce traduit après compilation ? (que nous dit reflector ?)

image

en double tout simplement, ce qui implique que ces unités de mesures ne sont que du sucre syntaxique pour F#,  mais à mon avis très utile. Pour preuve Andrew Kennedy, relate un fait passé en 1999 (125 million de $, perdu par la NASA, pour une erreur d'unité).

 

1.0<homme> / xxxx<km/h>

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: dimanche 31 août 2008 10:39 par pierrick

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Office 365: Script PowerShell pour assigner des droits Full Control à un groupe défini par Blog Technique de Romelard Fabrice le 04-30-2017, 09:22

- SharePoint 20XX: Script PowerShell pour exporter en CSV toutes les listes d’une ferme pour auditer le contenu avant migration par Blog Technique de Romelard Fabrice le 03-28-2017, 17:53

- Les pièges de l’installation de Visual Studio 2017 par Blog de Jérémy Jeanson le 03-24-2017, 13:05

- UWP or not UWP sur Visual Studio 2015 ? par Blog de Jérémy Jeanson le 03-08-2017, 19:12

- Désinstallation de .net Core RC1 Update 1 ou SDK de Core 1 Preview 2 par Blog de Jérémy Jeanson le 03-07-2017, 19:29

- Office 365: Ajouter un utilisateur ou groupe dans la liste des Site collection Administrator d’un site SharePoint Online via PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-24-2017, 18:52

- Office 365: Comment créer une document library qui utilise les ContentTypeHub avec PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-22-2017, 17:06

- [TFS] Supprimer en masse les dépendances à SQL Enterprise ou Developer avant de procéder à une migration par Blog de Jérémy Jeanson le 02-20-2017, 20:30

- Office 365: Attention au volume utilisé par les fichiers de Thèmes de SharePoint Online par Blog Technique de Romelard Fabrice le 02-07-2017, 18:19

- [SCVMM] Supprimer une machine bloquée par Blog de Jérémy Jeanson le 01-31-2017, 21:22