Haskell为理解中的变量赋值

eXi*_*nCe 2 haskell list-comprehension list

我在以下练习中遇到了一些问题:

我应该编写一个函数,即3个数字,xyn,x和y分别是列表推导的底部和上限,n是理解所具有的分区数.

例如:

?> partition 10 20 4
[10.0, 12.5, 15.0, 17.5, 20.0]
Run Code Online (Sandbox Code Playgroud)

我所做的是以下内容:

partition :: Double -> Double -> Double -> [Double]
partition x y n = [a+b | b = (y-x) / n ,  a -> [x,b..y]]
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我不能确定,因为当我尝试运行它,我收到以下错误消息的理解,里面b变量的值:

parse error on input `='
Run Code Online (Sandbox Code Playgroud)

注意:这应该是一个初学者练习,这应该有一个简单的解决方案

ram*_*ion 8

您只需要使用let关键字:

partition x y n = [a+b | let b = (y-x)/n ,  a <- [x,x+b..y]]
Run Code Online (Sandbox Code Playgroud)

然后你可以b根据需要使用:

? partition 10 20 4
[12.5,15.0,17.5,20.0,22.5]
Run Code Online (Sandbox Code Playgroud)

  • @ user3237465我真的不认为那是相关的.这里的错误是使用`a + b`而不仅仅是'a`,而不是与Haskell有趣的枚举规则有关. (2认同)