jas*_*son -1 haskell tuples list
我在Haskell中有一个10元组的列表,我想从元组列表中获得第n个元组.但正如我所看到的,只有长度函数与该列表一起使用.头,尾或!! 功能不起作用.你能告诉我该怎么办?元组由整数和字符串组成.例如,当我尝试这个:
tail [(3,5,"String1","String2","String3","String4","String5","String6","String7","String8"),(3,5,"String1","String2","String3","String4","String5","String6","String7","String8"),(3,5,"String1","String2","String3","String4","String5","String6","String7","String8")]
Run Code Online (Sandbox Code Playgroud)
我从拥抱中收到此错误消息:
ERROR - Cannot find "show" function for:
*** Expression : tail [(3,5,"String1","String2","String3","String4","String5","String6","String7","String8"),(3,5,"String1","String2","String3","String4","String5","String6","String7","String8"),(3,5,"String1","String2","String3","String4","String5","String6","String7","String8")]
*** Of type : [(Integer,Integer,[Char],[Char],[Char],[Char],[Char],[Char],[Char],[Char])]
Run Code Online (Sandbox Code Playgroud)
以下是如何Show为3元组声明实例.希望这说明了这个想法,你可以将它扩展到更多元素:
import Data.List (intercalate)
instance (Show a, Show b, Show c) => Show (a, b, c) where
show (a, b, c) = "(" ++ (intercalate "," ([show a, show b, show c])) ++ ")"
您可以像逻辑含义一样阅读实例声明:如果我可以显示类型a,b和c的值,那么我可以显示类型(a,b,c)的元组,这里是如何.
GHC为最多15个元组的所有内容定义了一个Show实例,因此您可能不需要在您的情况下定义它.