haskell如何使用先前指定的变量
如果我正确地阅读了您的问题和注释,而您只想在func1中使用func a的值,那么如何首先使用分配给a的变量。。你尝试了命令式风格,但注意到这只适用于IO单子 在这种情况下,让我们非常接近:haskell如何使用先前指定的变量,haskell,haskell-platform,Haskell,Haskell Platform,如果我正确地阅读了您的问题和注释,而您只想在func1中使用func a的值,那么如何首先使用分配给a的变量。。你尝试了命令式风格,但注意到这只适用于IO单子 在这种情况下,让我们非常接近: do b <- func a c <- func1 b func2 c 但在哈斯凯尔,我们通常用构图来代替: myResult a = let b = func a c = func1 b in func2 c 那是 my
do
b <- func a
c <- func1 b
func2 c
但在哈斯凯尔,我们通常用构图来代替:
myResult a =
let b = func a
c = func1 b
in func2 c
那是
myResult a = func2 (func1 (func a))
最后,您可以删除点a以获得无点样式:
如果您喜欢经验法则是,您必须查看函数的类型
当函数返回IO或您正在使用的任何monad时,请使用我不确定您希望代码执行的操作–您的问题不清楚。你能详细说明一下吗,也许能达到预期的效果?与此相关的是,您的代码当前没有进行类型检查;如果没有func、func1和func2的类型以及整个do块的预期类型,则无法回答此问题。你说它不起作用是什么意思?例如,如果func=return,func1=return,则该选项有效。反向,func2=putStrLn,a=Hello,world!——它打印出来了!德洛,奥利。听起来你好像遇到了一个打字问题,这意味着我们需要看到没有进行打字检查的特定代码,以便提供帮助。查看一些漂亮的图片和解释。我必须使用b为什么你必须使用这个?
myResult a = func2 (func1 (func a))
myResult a = func2 . func1 . func $ a
myResult = func2 . func1 . func
do
b <- func a
c <- func1 b
func2 c
do -- do is not really necessary here... but let's play along
let b = func a
let c = func1 b
func2 c
do
b <- func a
let c = func1 b
func2 c