首页 > 解决方案 > Haskell,元组(双精度,字符串)

问题描述

我需要一点帮助。

输入:(双精度,字符串)元组

输出: - 在新行中字符串+“:”+“”+增加15%的实数,在新行“完成”的末尾

例子:

myPutStr [(210.0,"Converse"),(315.0,"Crocs"),(250.0,"Lacoste"),(275.5,"Under Armour")]

输出:

匡威:241.0

鳄鱼:362.0

鳄鱼:287.0

安德玛:316.825

完毕

标签: haskelltuples

解决方案


您可以使用mapM_/traverse_或翻转的参数版本来实现它:forM_/ for_。我更喜欢for_它,因为它看起来更像是来自 Java 等语言的“增强型 for 循环”。

import Data.Foldable (for_)

myPutStr :: [(Double,String)] -> IO ()
myPutStr vals = do
    for_ vals $ \(num, str) -> do
        putStr str
        putStr ": "
        print (num * 1.15) -- increase num by 15%
    putStrLn "Done"

推荐阅读