Mise à jour des cours F#

Je viens de relire et corriger toute la section Cours F# de ce site. Les exemples fonctionnent maintenant avec la dernière version de F# (1.9.6.16).

Les principaux changements au niveau du langage concernent :

  • les compréhensions de listes, une partie du sucre syntaxique a disparu (le résultat est donc plus verbeux, mais aussi plus cohérent avec le reste) ;
  • des renommages dans la bibliothèque : fold1 est devenu reduce ; sort, sortWith (le nouveau sort n'utilise pas de fonction de comparaison) ;
  • la syntaxe basée sur l'indentation est utilisée par défaut, plusieurs bogues ont été corrigés ;
  • la notation de types (int, string) Map est maintenant dépréciée au profit de Map<int, string>.

Merci à ceux qui ont laissé des commentaires, cela m'a été utile lors de la relecture. N'hésitez pas à signaler tout oubli de ma part.

Comments

1. On Tuesday, November 17 2009, 17:01 by Stéphane

Bonjour,

Bravo pour le site. Nous l'utilisons régulièrement. Le fait qu'il soit en français est de plus bien agréable.
Y-a-t-il des nouveautés de prévues?
Nous serions très intéressés par un "cours" sur l'utilisation de F# dans un contexte de parallélisme, le but étant d'estimer l'apport de l'approche fonctionnelle dans de tels contextes.
Conseillerais-tu une ressource en particulier sur le sujet?
merci
Stéphane

2. On Thursday, November 19 2009, 23:33 by Laurent

Bonjour,

Il y a un ensemble de primitives en F# pour faire de la programmation parallèle et asynchrone. Il faut aller voir du côté de l'objet async, des fonctions comme Async.Parallel. Il est aussi possible d'utiliser la Task Parallel Library (je ne connais pas bien, mais ça semble fort intéressant).

Le gros avantage de la programmation fonctionnelle est que les valeurs sont souvent immuables. En l'absence d'effet de bord sur un objet, on peut facilement passer l'objet d'un thread à l'autre sans se poser de question particulière. Toutes les problématiques de race conditions disparaissent quasiment - et le débogage est largement simplifié.