繁体   English   中英

使用Haskell中的元组列表

[英]Working with list of tuples in Haskell

我在Haskell中有一个10元组的列表,我想从该元组列表中获取第n个元组。 但正如我看到的那样,该列表仅使用length函数。 !! 功能不起作用。 你能告诉我该怎么办吗? 元组由整数和字符串组成。 例如,当我尝试这个:

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")]

我从拥抱中收到此错误消息:

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])]

以下是声明三元组的Show实例的方法。 希望这可以说明这个想法,您可以将其扩展到更多元素:

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实例,因此您可能不需要在这种情况下定义它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM