小编Byl*_*tor的帖子

Haskell:where子句引用lambda中的绑定变量

我试图使用梯形规则在Haskell中数字地集成一个函数,返回一个反导数,它带有参数a,b,用于集成区间的端点.

integrate :: (Float -> Float) -> (Float -> Float -> Float)

integrate f
  = \ a b -> d * sum [ f (a + d*k) | k <- [0..n] ] - d/2.0 * (f a + f b)
    where
      d = (b - a) / n
      n = 1000
Run Code Online (Sandbox Code Playgroud)

在上面,我用

n - for the number of subintervals
d - for the width of each subinterval
Run Code Online (Sandbox Code Playgroud)

除了lambda中绑定的参数a,b之外,这几乎可以正常工作.我收到错误消息:

Not in scope: `b'
Not in scope: `a'
Run Code Online (Sandbox Code Playgroud)

我可以理解a,b的范围仅限于lambda表达式,但是在Haskell中有一个解决方法,所以我不必在上面的每次出现时写(ba)/ n吗?

lambda haskell where-clause

13
推荐指数
2
解决办法
3699
查看次数

Haskell新手:没有Show in map函数的实例

在GHCI中,我键入以下内容:

map (+1) [1..10]
Run Code Online (Sandbox Code Playgroud)

返回[2,3,4,5,6,7,8,9,10,11]

到现在为止还挺好.

现在我输入:

min (map (+1) [1..10])
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

No instance for (Show ([b0] -> [b0]))
  arising from a use of `print'
Possible fix: add an instance declaration for (Show ([b0] -> [b0]))
In a stmt of an interactive GHCi command: print it
Run Code Online (Sandbox Code Playgroud)

这对我来说很奇怪.为什么Haskell认为我正在尝试打印任何参数,我该如何解决这个问题呢?

haskell instance show

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

标签 统计

haskell ×2

instance ×1

lambda ×1

show ×1

where-clause ×1