2012-07-21 109 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)")