相关疑难解决方法(0)

IO Monad在什么意义上纯粹?

我已经将IO monad描述为状态monad,状态是"现实世界".这种IO方法的支持者认为,这使IO操作变得纯粹,就像在引用透明时一样.这是为什么?从我的角度来看,IO monad中的代码似乎有很多可观察到的副作用.此外,是不是可以描述几乎任何非纯函数,如现实世界的功能?例如,我们不能想到,比方说,C的malloc是一个函数,它接受一个RealWorld和一个Int并返回一个指针和一个RealWorld,就像在Realmonorld隐含的IO monad中一样?

注意:我知道monad是什么以及它是如何使用的.请不要回复随机monad教程的链接,除非它专门解答我的问题.

io monads haskell

50
推荐指数
5
解决办法
7256
查看次数

将变量保存在Haskell中的另一个函数中

我迷失在这个概念中.这是我的代码,它的作用就是询问你的名字是什么.

askName = do
  name <- getLine
  return ()

main :: IO ()
main = do
       putStrLn "Greetings once again.  What is your name?"
       askName
Run Code Online (Sandbox Code Playgroud)

但是,如何在我main的askName中获取变量名称?

这是我的第二次尝试:

askUserName = do
  putStrLn "Hello, what's your name?"  
  name <- getLine  
  return name

sayHelloUser name = do
  putStrLn ("Hey " ++ name ++ ", you rock!")

main = do
  askUserName >>=  sayHelloUser
Run Code Online (Sandbox Code Playgroud)

我现在可以name以回调方式重新使用,但是如果在main中我想再次调用name,我该怎么做?(name <- getLine 显然避免放入主体)

haskell

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

标签 统计

haskell ×2

io ×1

monads ×1