gpt4 book ai didi

haskell - 其他表达式中的“where”

转载 作者:行者123 更新时间:2023-12-02 18:39:59 26 4
gpt4 key购买 nike

我可以在其他表达式中使用let

foo n = (let a = True in (\x -> a)) 3

foo' n | n == 1 = let a = True in a
| n /= 1 = False

但我不能对 where 做同样的事情

foo n = ((\x -> a) where a = True) 3

foo' n | n == 1 = a where a = True
| n /= 1 = False

1:20: parse error on input `where'

这在haskell中真的不可能还是只是我的错误?

最佳答案

let 是一个表达式,而 where 是一个子句。 where 绑定(bind)到语法结构,let 可以在表达式可以使用的任何地方使用。

你当然可以这样写:

foo n = ((\x -> a)) 3 where a = True

foo' n | n == 1 = a
| n /= 1 = False
where a = True

或者像这样:

foo n = (\a -> (\x -> a) 3) True

关于haskell - 其他表达式中的“where”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808065/

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