2009-09-25 35 views
0

我有下面的代碼看起來像這樣如何指定批量列表類型分配

[a,b,c,d] = ["a","b","c","d"] 

編譯器報告警告:

Warning: Definition but no type signature for 'a' 
     Inferred type: a :: [Char] 

如何沉默警告,並指定類型這個表達?

+0

? – sth 2009-09-25 10:27:46

+1

我不會在GHCi中遇到'let [a,b,c,d] = [「a」,「b」,「c」,「d」]' 請發佈更多關於編譯器的信息(及其版本)。 – mrueg 2009-09-25 10:31:04

+0

ghc 6.10.4,而不是ghci。 問題是當我在頂層完成這項任務時。如果我使用let或者它不報告警告的方法在內部移動它。 Ghc設置爲使用-Wall選項。 – Marko 2009-09-25 10:55:22

回答

2

在GHCI沒有錯誤:

Prelude> let [a,b,c,d] = ["a","b","c","d"] 

如果你想給整個片段的類型,嘗試,

Prelude> let x :: [String] 
        [email protected][a,b,c,d] = ["a","b","c","d"] 
您使用哪種編譯
3

您可以爲變量添加一個明確的類型簽名:

a, b, c, d :: String 
[a,b,c,d] = ["a","b","c","d"] 

還應該有一個禁用警告,因爲它是常見的做法是沒有明確指定類型的每一個輔助變量的一些編譯器標誌。

+0

是的,但我想避免輸入a,b,c,d兩次。 – Marko 2009-09-25 10:53:02

+1

你可以寫[a,b,c,d] = [「a」,「b」,「c」,「d」] :: [String] – mrueg 2009-09-25 16:46:15