2013-04-02 18 views
0

的名單假設我有以下列出哈斯克爾:推導顯示大元組

[((Int, Int), [[Char]], [[Char]], Bool, Bool, Bool)] 
[(Int, Int, [Char], [Char], [Char], [Char], [Char], [Char], [Char], [Char])] 

我知道,爲了能夠打印他們,我需要將其定義爲一個新的數據類型,然後進行顯示的一個實例,但有什麼辦法可以避免它?

在此先感謝。

+2

元組你應該開始使用記錄,否則你會*忘記什麼是什麼。 –

+0

是的,我知道,但由於它是一個任務,它有一些限制 –

回答

3

讓我們全部更換[Char]通過String擺脫一些支架超載:

[((Int, Int), [String], [String], Bool, Bool, Bool)] 

[(Int, Int, String, String, String, String, String, String, String, String)] 

這些已經可以打印:

Prelude> let x = replicate 2 ((1,2), ["a", "b"], ["c", "d"], True, False, True) :: [((Int,Int), [String], [String], Bool, Bool, Bool)] 

Prelude> :type x -- displays the type of x 
x :: [((Int, Int), [String], [String], Bool, Bool, Bool)] 

Prelude> print x 
[((1,2),["a","b"],["c","d"],True,False,True),((1,2),["a","b"],["c","d"],True,False,True)] 

Prelude> let x = replicate 2 (1,2,"a","b","c","d","e","f","g","h") :: [(Int,Int,String,String,String,String,String,String,String,String)] 

Prelude> :type x 
x :: [(Int, 
     Int, 
     String, 
     String, 
     String, 
     String, 
     String, 
     String, 
     String, 
     String)] 

Prelude> print x 
[(1,2,"a","b","c","d","e","f","g","h"),(1,2,"a","b","c","d","e","f","g","h")] 
+0

錯誤 - 表達式中的語法錯誤(意外輸入結束) –

+0

@KudayarPirimbaev在哪裏? –

+0

let x = replicate ... –