在Haskell中打印是一个纯函数; 为什么或者为什么不?我认为这不是因为它并不总是返回与纯函数应该相同的值.
我的函数vector1取一个类型的元组(Double,Double,Double),它应该将元组中的所有项乘以-1,并返回一个带有负双元组的列表.代码编译,但无限循环.
vector1 (p,q,r)= let
y=(p,q,r)
y'=[(-1)*y | (y)<-y']
in y'
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Haskell中定义梯形规则.我创建了一个辅助函数innerSum,它是梯形规则的总和部分.然后在积分定义中我乘以距离乘以下界,上界,一个函数和一些n个梯形.随着n增加,答案应该变得更准确.我的功能似乎适用于大多数情况
除了这种情况(可能还有其他情况):definiteIntegral(-1)1(\ x-> x ^ 100)20.
当我将值改为20而不是我的答案偏离某个并且变得更准确时,数字会随机跳转.我似乎无法找到错误
definiteIntegral :: Double -> Double -> (Double -> Double) -> Integer -> Double
definiteIntegral a b g n | a <= b = (dist a b n)*(innerSum a b g (dist a b n))
| otherwise = (dist a b n)*(innerSum b a g (dist b a n))
where dist a b n = (b-a)/(fromIntegral n::Double)
innerSum :: Double -> Double -> (Double -> Double) -> Double -> Double
innerSum a b g …Run Code Online (Sandbox Code Playgroud)