Если вы просто хотите использовать стиль по умолчанию, просто добавьте deriving Show
в конец строки, как показано ниже,
data Blabla = Blabla [Integer] [Char] [(Integer,Char,Char,Integer,String)] Integer deriving Show
Будет отлично работать, так как все примитивные типы, из которых построен Blabla, "показны". Например
*Main> Blabla [1,2,3] "abc" [(1,'A','B',2,"Three")] 54
Blabla [1,2,3] "abc" [(1,'A','B',2,"Three")] 54
Может быть лучше построить Blabla
как именованную структуру
data BlaBlu = BlaBlu {
theNumbers :: [Integer] ,
theIdentifier :: [Char] ,
theList :: [(Integer,Char,Char,Integer,String)] ,
theInteger :: Integer
} deriving Show
Делая это, вы можете сделать структуру более понятной.
*Main> BlaBlu [1,2,3] "abc" [(1,'A','B',2,"Three")] 54
BlaBlu {theNumbers = [1,2,3], theIdentifier = "abc", theList = [(1,'A','B',2,"Three")], theInteger = 54}
Сделайте то же самое для структуры списка, и, надеюсь, код будет более читабельным.
Если вы хотите написать свой собственный экземпляр Show
, чтобы вы могли настроить его, вы можете удалить deriving Show
и просто написать свой собственный экземпляр, например:
instance Show Blabla where
show (Blabla ints chars list num) =
"integers = " ++ show ints ++ "\n" ++
"chars = " ++ show chars ++ "\n" ++
"specialList = " ++ show list ++ "\n" ++
"integer = " ++ show num
Где реализация примерно соответствует выводу, который вы задали в исходном вопросе.
*Main> Blabla [1,2,3] "abc" [(1,'A','B',2,"Three")] 54
integers = [1,2,3]
chars = "abc"
specialList = [(1,'A','B',2,"Three")]
integer = 54