2012-07-21 66 views
0

[(Double, Double)]返回的列表,我想格式化并返回它像这样String转换列表中包含元组格式化字符串

"(Double, Double)" 

值必须转换为字符串上面提到行Double

如果在列表中有多个值,其格式应为:

"(Double, Double), (Double, Double), ..., (Double, Double)" 
+0

如果您的列表包含超过1元组,会发生什么? – efie 2012-07-21 09:17:31

+1

您可能正在寻找'f xs = map show xs',但是如果没有更多信息很难说清楚。你可以用你期望的输入和输出的例子来编辑你的文章吗?例如,你期望输入'[(1.0,2.0),(3.5,4.5)]'是什么输出? – 2012-07-21 09:31:41

+0

如果我的列表中有更多的元组,我期望'“(Double,Double),(Double,Double),...” – MahmutBulut 2012-07-21 09:50:56

回答

1
format yourList = intercalate ", " $ map show yourList 
+3

只有一个建议:使用'intercalate',它结合了'concat'和'intersperse'。 – 2012-07-21 13:51:01

0

您可以使用列表的本地Show实例:

showPairSequence :: [(Double, Double)] -> String 
showPairSequence = init . tail . show 
+0

'init。 tail'?也许'showPairSequence = show'会更好? – 2012-07-21 12:24:01

+0

@ДМИТРИЙМАЛИКОВ原始海报不需要'['或']' – alternative 2012-07-21 12:26:54

1

如果你实际上想打印Double的具体数值,然后efie给出了正确的答案。但是,如果你只想要显示的字符串"Double",那么你可以使用下面的回答:

format = intercalate ", " . map (const "(Double, Double)")