gpt4 book ai didi

functional-programming - 多项式方程标准毫升

转载 作者:行者123 更新时间:2023-12-04 16:47:29 26 4
gpt4 key购买 nike

我正在尝试创建一个函数来求解标准 ML 中的单变量多项式方程,但它一直给我错误。

代码如下

(* Eval Function *)
- fun eval (x::xs, a:real):real =
let
val v = x (* The first element, since its not multiplied by anything *)
val count = 1 (* We start counting from the second element *)
in
v + elms(xs, a, count)
end;

(* Helper Function*)
- fun pow (base:real, 0) = 1.0
| pow (base:real, exp:int):real = base * pow(base, exp - 1);

(* A function that solves the equation except the last element in the equation, the constant *)
- fun elms (l:real list, a:real, count:int):real =
if (length l) = count then 0.0
else ((hd l) * pow(a, count)) + elms((tl l), a, count + 1);

现在输入应该是多项式元素的系数和替换变量的数字,即如果我们有函数 3x^2 + 5x + 1,并且我们想用 2 替换 x,那么我们将调用评估如下:

eval ([1.0, 5.0, 3.0], 2.0);

结果应该是 23.0,但有时在不同的输入下,它会给我不同的答案,但在这个输入上它会给我以下错误

uncaught exception Empty raised at: smlnj/init/pervasive.sml:209.19-209.24

我的问题是什么?

最佳答案

Empty 在您对空列表运行 hdtl 时引发。 hdtl 几乎从未在 ML 中使用;列表几乎总是使用模式匹配来解构;它更漂亮,更安全。你似乎没有空列表的情况,我没有通过你的代码来弄清楚你做了什么,但你应该能够自己解决。

关于functional-programming - 多项式方程标准毫升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9727229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com