Les Langues Que Nous Appelons Haskell
unsafePerformIO
fait partie de la Étrangères de la Fonction de l'Interface de spécification, de base Haskell 98 cahier des charges. Il peut être utilisé pour faire des effets secondaires locaux qui n'échappent pas à une certaine étendue, dans le but d'exposer un point de vue purement fonctionnel de l'interface. C'est, nous l'utilisons pour masquer les effets lorsque le vérificateur de types peut pas le faire pour nous (à la différence de la ST monade, qui cache des effets statiques de garantie).
Pour illustrer précisément les multiples langues que nous appelons "Haskell", considérer l'image ci-dessous. Chaque anneau correspond à un ensemble spécifique de calcul de fonctions, commandé par la sécurité et de la zone correspondant à la puissance expressive (c'est à dire le nombre de programmes que vous pouvez écrire, si vous disposez de cette fonctionnalité).
La langue connue comme Haskell 98 est spécifié à droite vers le bas au milieu, en admettant totales et partielles de fonctions. Agda (ou Épigramme), où l'ensemble des fonctions sont autorisées, est encore moins expressif, mais "plus pur" et plus sûr. Tout en Haskell que nous l'utilisons aujourd'hui tout en œuvre pour les FFI, où unsafePerformIO vie. Qui est, vous pouvez écrire quelque chose de moderne, Haskell, mais si vous utilisez des choses à partir de l'extérieur des anneaux, il sera plus difficile d'établir la sécurité et des garanties de sécurité grâce à la bague intérieure.
![Language capabilities and expressive power alt text]()
Donc, Haskell programmes ne sont pas généralement construit à partir de 100% referentially code transparent, cependant, il est la seule modérément langue commune, qui est pure par défaut.
0 votes
R
1 votes
I
5 votes
S s y s y s
1 votes
Y s
1 votes
U
0 votes
O