50 votes

ce n' :: moyenne (ou debout) en Haskell?

Je vois et de l'utilisation de l' :: symboles partout , mais ne sais toujours pas ce que l' :: symbole signifie que lors de la programmation en Haskell.

par exemple

run :: Int -> Int -> Int

Je veux savoir ce qu' :: signifie, c'est tout.

Merci à l'avance.

51voto

ninjagecko Points 25709

Vous pouvez google pour haskell "double colon" ou choses semblables; c'est malheureusement un peu difficile de google pour la syntaxe, mais dans ce cas, vous pouvez lui donner un nom.

En Haskell, vos programmes s'exécutent souvent très bien sans elle (si vous voulez l'utiliser pour affiner la spécification de toutes les fonctions que vous définissez, et il est de bonne pratique).

L'idée est que vous pouvez insérer un :: ... partout (même au milieu d'une expression-à-dire "par la façon dont M. Compilateur, cette expression doit être de type ...". Le compilateur va alors se jeter une erreur s'il peut être prouvé cela peut ne pas être le cas.

Je pense que vous pouvez aussi l'utiliser pour le "cast" fonctionne pour les versions que vous voulez; par exemple, si une fonction est "polymorphe" (a un type général de la signature) et que vous voulez vraiment, disons qu'un Integer, alors vous pourriez le faire :: Integer sur la valeur qui en résulte peut-être, je suis un peu rouillé mais.

17voto

Vous devriez lire:

foo :: a 

"le nom foo est une valeur de type a". Lorsque vous écrivez:

run :: a -> b 

cela signifie:

  1. Vous devez déclarer le nom de l' run.

  2. Ce nom se réfère à une valeur de type a -> b,

Le type a -> b est le type d'une fonction qui prend une valeur de type a et renvoie une valeur de type b.

Vous devez vraiment savoir sur les types de comprendre Haskell. Le système de type est l'un des plus caractéristique essentielle de Haskell, et c'est ce qui fait de la langue de manière expressive.

7voto

hammar Points 89293

Lorsque vous avez une grande peur prospectifs le typage d'erreur, vous pouvez (temporairement) envelopper les parties de votre code en (myexpression :: MyType) à indiquer au compilateur le type que vous attendez myexpression à avoir. Ce sera souvent aider le compilateur vous donner de meilleurs messages d'erreur.

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