BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Haskell supporte iOS et bénéficie de nombreuses améliorations

Haskell supporte iOS et bénéficie de nombreuses améliorations

Favoris

GHC 7.8.1 a récemment été rendu disponible, apportant de nombreuses améliorations à l'écosystème Haskell. Haskell peut maintenant être compilé pour iOS, et porte de nouvelles fonctionnalités comme les Closed Type Families, Roles, Overloaded Lists, et Pattern Synonyms, en plus de multiples progrès sur les performances.

Haskell peut maintenant être compilé pour iOS via clang, et supporte le développement en utilisant XCode 5. A cause du manque de librairies d'interfaces cross-plateforme en Haskell, vous devrez développer votre UI séparément et appeler des fonctions Haskell depuis du code Objective-C. Bien que ce support avait été annoncé il y a un peu plus de 8 mois, c'est la première version majeure de GHC à inclure ce support.

A noter que Template Haskell n'est pas encore disponible pour iOS.

La compilation cross-plateforme à évolué de manière générale avec par exemple un meilleur support du dynamic linking. GHCi (version interactive de GHC) utilise maintenant le système de dynamic linking par défaut, au lieu du linker statique. Avec GHC, vous pouvez utiliser un nouveau flag "--dynamic-too", pour émettre à la fois des objets statiques et dynamiques. (Par défaut GHC utilise toujours du static linking).

Quelques autres fonctionnalités de cette version :

  • Closed Type Families - Les familles de type sont utilisées pour surcharger des types data. Une famille de type est définie en un endroit et ne peut être étendue, ce qui est pratique pour éviter des effets de bords non voulus par le développeur initial.
  • Roles - pour éliminer les définitions incomplètes en utilisant GeneralizedNewTypeDeriving.
  • Overloaded Lists - Sucre syntaxique pour utiliser la notation des listes pour des structures comme les Set, Map, IntMap, Vector, Text et Array.
  • Pattern Synonyms.
  • Typeable est maintenant polyforme, rendant Typeable1, Typeable2, etc. obsolètes et dépréciés.
  • Un tout nouveau gestionnaire I/O qui scale linéairement jusqu'à 32 Cœurs.
  • De nombreuses améliorations sur Haskell Template, comme le support des Roles, annotation pragmas, et les expressions Template Haskell typées.
  • Un mode parallèle pour make.
  • Un résolveur pour les types naturels amélioré en termes de performances.

Un potentiel changement cassant la rétro-compatibilité est à prévoir dans la prochaine version (7.10), puisque Applicative deviendra une classe parente à Monad. Pour faciliter cette transition, la version courante de GHC émet un warning si un type est instance de Monad mais pas d'Applicative, ou instance de MonadPlus mais pas d'Alternative, ou encore si une fonction locale nommée join, <*> ou pure est définie.

Il y a bien d'autres changements, que vous pouvez trouver dans les release notes.

A noter que la plateforme Haskell, qui regroupe GHC et des outils pour travailler avec Haskell, n'a pas encore été mise à jour avec cette dernière version.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT