2016-04-16 38 views
1

如何在列表上使用printf? 我有一個數字列表,我想通過尊重格式打印它們(例如:%.3f)。我試圖通過printf使用地圖,但它不起作用。所以,我不知道。有人可以幫助我嗎?任何想法都可以接受。有沒有辦法從列表中創建一個關於自定義格式的字符串?在Haskell的列表中使用「printf」

+0

請問你可以添加你所嘗試的 - 因爲我確實會推薦使用'map',我不明白爲什麼它不應該工作 – Carsten

+0

可能的重複:https://stackoverflow.com/questions/36658890/is-there -a-way-to-use-print-with-formats-of-printf-in-haskell – Carsten

+0

「printf」的結果是多態的,不能在沒有上下文的情況下決定,嘗試添加更多的類型簽名。 – zakyggaps

回答

1

printf可以產生字符串,而不是將它們打印到標準輸出。這個 是因爲它的結果類型過載(它也是機器 的一部分,使它成爲可變參數)。

import Text.Printf 

main :: IO() 
main = putStrLn . unwords $ printf "%.3f" <$> ([1..10] :: [Double]) 

這應該做的伎倆。


BTW,printf不是類型安全的,可以在運行時的打擊。我建議你使用 類似 formatting