我能写一个执行IO
的函数作为它的副作用吗?例如:
f :: Int -> Int
f n = putStr "text" >> return n*2
显然我没有任何方法可以编写代码而不完全不正确,但这至少应该显示我正在寻找的内容。
答案 0 :(得分:11)
你的功能几乎是正确的。如果它有副作用,那么它需要类型IO
。此外,功能应用程序绑定比中缀更严格。将这些结果修复为:
f :: Int -> IO Int
f n = putStr "text" >> return (n*2)