2013-04-02 2 views
0

Предположим, что у меня есть следующие спискиHaskell: Выведение Показать в списке больших кортежей

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

Я знаю, что для того, чтобы иметь возможность печатать их мне нужно, чтобы определить их как новый тип данных, а затем сделать экземпляр Show, но есть ли способ избежать этого?

Заранее спасибо.

+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

ERROR - Синтаксическая ошибка в выражении (неожиданный конец ввода) –

+0

@KudayarPirimbaev Где? –

+0

let x = replicate ... –

Смежные вопросы