相关疑难解决方法(0)

在Haskell中应该避免使用表示法吗?

大多数Haskell教程都教授IO使用do-notation.

我也开始使用do-notation,但这使得我的代码看起来更像是一种命令式语言而不是FP语言.

本周我看到一个教程使用IO <$>

stringAnalyzer <$> readFile "testfile.txt"
Run Code Online (Sandbox Code Playgroud)

而不是使用 do

main = do
    strFile <- readFile "testfile.txt"
    let analysisResult = stringAnalyzer strFile
    return analysisResult
Run Code Online (Sandbox Code Playgroud)

并且日志分析工具没有完成do.

所以我的问题是" 在任何情况下我们都应该避免使用记号吗? ".

我知道do在某些情况下可能会使代码变得更好.

另外,为什么大多数教程都教IO do

在我看来<$>,<*>使代码更多FP比IO.

haskell

38
推荐指数
6
解决办法
1万
查看次数

关于将语法转换为>> =语法的简单示例

如何reverse2lines转换成使用>>=语法?就像addOneInt变成了 addOneInt'

addOneInt :: IO () 
addOneInt = do line <- getLine
               putStrLn (show (1 + read line :: Int))      


addOneInt' :: IO ()
addOneInt' = getLine >>= \line ->
             putStrLn (show ( 1 + read line :: Int))  

reverse2lines :: IO () 
reverse2lines = 
 do line1 <- getLine 
    line2 <- getLine
    putStrLn (reverse line2) 
    putStrLn (reverse line1)
Run Code Online (Sandbox Code Playgroud)

另请考虑阅读后续问题及其有价值的答案.

haskell

1
推荐指数
1
解决办法
154
查看次数

标签 统计

haskell ×2