我试图弄清楚如果可能的话,你能在Haskell函数中执行多个命令吗?例如,如果我有:
foo [[a]] = print (head a) --AND -- map (head of everything but the first value)
我该如何做这样的事情?是否有一个函数可以代替--AND--来允许我在列表列表上执行这两个命令?
答案 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
之类的东西。这是错误的功能和操作顺序,但给出了一丝风味。检查模块文档。