变量不在Haskell的范围内。这是什么意思?

filter :: (a -> Bool) -> [a] -> [a]
filter =  (x -> x % 2 == 0) [1,2,3,4,5]

运行时在 Haskell 中使用下面的代码我得到一个错误:'变量不在范围内:(%) :: [Integer] -> Bool -> (a -> Bool) -> [a] -> [a]'

这是什么意思 ?

我试图创建一个接受列表并返回偶数的函数。对 haskell 如此陌生,这就是我所管理的,但我仍然遇到错误。我用谷歌搜索但我找不到解决方案

回答

它只是意味着%没有定义。

当我打开 ghci shell 并询问+and%运算符的类型时,我看到它+已定义,但是%我得到了相同的错误:

Prelude> :t (+)
(+) :: Num a => a -> a -> a
Prelude> :t (%)

<interactive>:1:1: error: Variable not in scope: %

模数可用作mod函数。

不过,您的示例中还有其他一些问题:

  • 已经有一个filter在 prelude 中命名的函数
  • 您正在函数定义中传递参数(整数列表)
  • 您正在将整数列表传递给接受单个整数的 lambda 函数

以上是变量不在Haskell的范围内。这是什么意思?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>