12 votes

Haskell sans types

Est-il possible de désactiver ou de contourner le système de types en Haskell ? Il y a des situations où il est pratique d'avoir tout non typé comme dans Forth et BCPL ou monotypé comme dans Mathematica. Je pense à la possibilité de déclarer tout comme le même type ou de désactiver complètement la vérification des types.

Edit : Conformément aux principes de l'OS, il s'agit d'une question technique étroite, et non d'une demande de discussion sur les mérites relatifs des différentes approches de programmation. Pour reformuler la question, "Haskell peut-il être utilisé d'une manière telle que l'évitement des conflits de types relève entièrement de la responsabilité du programmeur ?".

10voto

Tikhon Jelvis Points 30789

Regardez également Data.Dynamic qui vous permet d'avoir des valeurs typées dynamiquement dans certaines parties de votre code sans désactiver la vérification de type dans tout le code.

9voto

Pubby Points 29386

GHC 7.6 (pas encore publié) possède une fonctionnalité similaire, -fdefer-type-errors :

http://hackage.haskell.org/trac/ghc/wiki/DeferErrorsToRuntime

Il reporte toutes les erreurs de type jusqu'au moment de l'exécution. Ce n'est pas vraiment untyped mais cela permet presque autant de liberté.

8voto

rotskoff Points 674

Même avec fdefer-type-errors on n'éviterait pas le système de types. Il ne permet pas non plus réellement l'indépendance de type. Le but de ce drapeau est de permettre au code avec des erreurs de type de compiler, tant que les erreurs ne sont pas appelées par le système de types. Main fonction. En particulier, tout code comportant une erreur de type, lorsqu'il est effectivement appelé par un interprète Haskell, échouera toujours.

Si la perspective de fonctions non typées en Haskell peut être tentante, il convient de noter que le système de types est réellement au cœur du langage. Le code prouve sa propre fonctionnalité lors de la compilation, et la rigidité du système de types empêche un grand nombre d'erreurs.

Peut-être que si vous donniez un exemple précis du problème que vous rencontrez, la communauté pourrait y remédier. L'interconversion entre les types de nombres est une question que j'ai déjà posée et il existe un certain nombre de bonnes astuces.

0voto

Erik Allik Points 9158

Peut-être fdefer-type-errors combiné avec https://hackage.haskell.org/package/base-4.14.1.0/docs/Unsafe-Coerce.html offre ce dont vous avez besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X