如何在Haskell中的同一个函数中使用多个“命令”

时间:2013-12-21 23:56:44

标签: function haskell command

我试图弄清楚如果可能的话,你能在Haskell函数中执行多个命令吗?例如,如果我有:

foo [[a]] = print (head a) --AND -- map (head of everything but the first value)

我该如何做这样的事情?是否有一个函数可以代替--AND--来允许我在列表列表上执行这两个命令?

2 个答案:

答案 0 :(得分:2)

您可能正在寻找do符号,它与正确形成的模式匹配相结合可以获得您想要的行为:

foo :: Show a => [[a]] -> IO ()
foo xs = do
    print $ head $ head xs -- first value in the 2D list
    print $ map head $ tail xs -- Skip first sublist with tail

答案 1 :(得分:0)

Control.Arrow模块有许多组合器,用于以有趣的方式将输入连接到功能。扇出,粉丝等

在我的手机上,但print (<<<) head (&&&) map ( f . tail) $ input之类的东西。这是错误的功能和操作顺序,但给出了一丝风味。检查模块文档。