gpt4 book ai didi

haskell - haskell中纯和不纯有什么区别?

转载 作者:行者123 更新时间:2023-12-03 15:27:56 25 4
gpt4 key购买 nike

haskell中纯和不纯有什么区别?
在haskell中做IO的时候,把纯项和不纯项分开是什么意思?

最佳答案

本质上,您希望在“不纯部分”中保留尽可能少的代码。用 IO monad 编写的代码永远充满不安全感。带有签名的函数 IO Int将在 IO monad 中返回一个整数,但除此之外它还可以向月球发送核导弹。如果不研究每一行代码,我们就无法知道。

例如,假设您要编写一个程序,该程序接受一个字符串并在其上附加“, dude”。

main = do
line <- getLine
putStrLn $ line ++ ", dude"

代码的某些部分需要在 IO monad 中,因为它们有副作用。这包括 getLine 和 putStrLn。但是,将两个字符串放在一起不会。
main = do
line <- getLine
putStrLn $ addDude line

addDude input = input ++ ", dude"

addDude 的签名表明它是纯的: String -> String .没有 IO这里。这意味着我们可以假设 addDude 至少会以这种方式运行。它将接受一个字符串并返回一个字符串。它不可能有副作用。它不可能炸毁月球。

关于haskell - haskell中纯和不纯有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15183324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com