2012-03-15 77 views
2

我使用GHCI我的翻譯違約,Type在ghci中

的規格爲我的任務是必須的元組的列表Int小號即

[(Int,Int)] 

當我輸入

let edges = [(0,2),(0,3),(1,2),(2,3)] 

GHCi自動使數字類型Integer而不是Int,所以我無法測試我的程序,即

:t edges 
edges :: [(Integer,Integer)] 

我該如何強制這樣的定義使用Int而不是Integer

謝謝!

+0

你的意思是GHCi而不是hgci,偶然? – 2012-03-15 06:05:17

+0

相關鏈接:http://www.haskell.org/ghc/docs/7.0.4/html/users_guide/interactive-evaluation.html#extended-default-rules和http://www.haskell.org/onlinereport/ decls.html#sect4.3.4 – ivanm 2012-03-15 06:16:36

+0

Tokhon Jelvis給了你答案......但如果可能的話,你應該改變你的程序來使用'Integer'而不是'Int'你應該。 'Int'具有定義不明確的語義,並導致微妙的錯誤和可伸縮性問題。除非它在性能關鍵循環中,否則使用'Integer' – 2012-03-15 08:03:24

回答

7

,當你進入它這樣您可以指定類型:

let edges = [(0,2),(0,3),(1,2),(2,3)] :: [(Int, Int)] 
1

你也可以使用通常指定類型的程序功能的方式,但你必須在同一個解釋器的命令

適合兩個表達式
>let edges :: [(Int, Int)]; edges = [(0,2),(0,3),(1,2),(2,3)] 
>:t edges 
    edges :: [(Int, Int)]