【发布时间】:2018-10-08 15:23:51
【问题描述】:
我无法理解 haskell 中“in”关键字的全部范围。我的理解是,您可以使用它将参数传递给函数。但是,我无法理解如何应用于类似于下图所示的函数:
foo xs a =
case xs of
[] -> (a,[])
y:ys ->
let (n,ns)=foo ys a in
if y>0 then (1+n,y:ns)
else (n,ns)
如果方程提供了 foo 不采用的参数,“in”如何应用于方程?
【问题讨论】:
-
(1) 吹毛求疵:
in不是一个独立的关键字;它总是伴随着let:let {- definitions -} in {- expression that uses the definitions -}。 (2) 在您的情况下,let 表达式定义了n和ns,分别为foo、ys和a。 -
@duplode 这不是吹毛求疵,这就是答案。你应该这样发布。
-
@SebastianRedl 我现在无法以令人满意的方式写出完整的答案。如果其他答案没有涵盖,我会稍后再做。
标签: haskell