Domanda Cosa significa :: (doppio colon) in Haskell?


Vedo e uso il :: simboli ovunque ma ancora non so cosa :: simbolo significa quando si programma in Haskell, ad es.

run :: Int -> Int -> Int
--  ??

Cosa fa :: (doppio colon) rappresenta per Haskell?


36
2018-05-08 10:14


origine


risposte:


Puoi google per haskell "double colon" o cose simili; sfortunatamente è un po 'difficile da trovare su Google per la sintassi, ma in questo caso puoi chiamarlo.

In Haskell, i tuoi programmi funzioneranno spesso senza di esso (anche se vorrai usarlo per affinare le specifiche di tutte le funzioni che definisci, ed è una buona pratica).

L'idea è che tu possa inserire un :: ... ovunque (anche nel mezzo di un'espressione) per dire "dal modo in cui Mr. Compiler, questa espressione dovrebbe essere di tipo ...Msgstr "" "Il compilatore emetterà un errore se può essere provato che questo potrebbe non essere il caso.

Penso che puoi anche usarlo per "castare" le funzioni alle versioni che vuoi; per esempio. se una funzione è "polimorfica" (ha una firma di tipo generale) e in realtà vuoi, diciamo a Integer, quindi potresti farlo :: Integer sul valore risultante forse; Sono un po 'arrugginito però.


29
2018-05-08 10:25



Dovresti leggere:

foo :: a 

come "il nome foo è un valore di tipo aQuando scrivi:

run :: a -> b 

questo significa:

  1. Stai dichiarando il nome run.

  2. Questo nome farà riferimento a un valore che ha tipo a -> b,

Il tipo a -> b è il tipo di una funzione che accetta un valore di tipo a e restituisce un altro valore di tipo b.

Devi davvero imparare dei tipi per capire Haskell. Il sistema dei tipi è una delle caratteristiche più cruciali di Haskell, ed è ciò che rende il linguaggio così espressivo.


11
2018-05-08 13:49



Se riscontri un errore di typechecking di notevole impatto, puoi (temporaneamente) racchiudere parti del tuo codice (myexpression :: MyType) per dichiarare esplicitamente al compilatore quale tipo di file ti aspetti myexpression avere. Questo spesso aiuterà il compilatore a darti messaggi di errore migliori.


6
2018-05-08 14:00