对 OCaml 类型的编译误解
compilation misunderstanding over types in OCaml
我的学校作业要求我使用 属性:
将两个多项式 A 和 B 相乘
if A = a +pX then AB = aB + XPB
为了实现这个,我编写了这个递归程序,它将多项式实现为它的系数列表:
let rec mul p q = match (p,q) with
|a::b,q -> add (mulscal q a) (mul b [0.]::q)
|[],q -> p;;
但是我得到这个错误:
Line 4, characters 11-44:
4 | |a::b,q -> add (mulscal q a) (mul b [0.]::q)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: This expression has type float list
but an expression was expected of type float
考虑到这正是我想要的(代表多项式的浮点数列表),这很奇怪。
如果有人想让 Ocaml 明白程序是“正确的”,我将不胜感激。
PS:很抱歉缺少详细信息,但主题是法语,翻译它需要太多时间。
我发现你只需要更换
|a::b,q -> add (mulscal q a) (mul b [0.]::q)
来自
|a::b,q -> add (mulscal q a) (mul b (0.::q))
我的学校作业要求我使用 属性:
将两个多项式 A 和 B 相乘if A = a +pX then AB = aB + XPB
为了实现这个,我编写了这个递归程序,它将多项式实现为它的系数列表:
let rec mul p q = match (p,q) with
|a::b,q -> add (mulscal q a) (mul b [0.]::q)
|[],q -> p;;
但是我得到这个错误:
Line 4, characters 11-44:
4 | |a::b,q -> add (mulscal q a) (mul b [0.]::q)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: This expression has type float list
but an expression was expected of type float
考虑到这正是我想要的(代表多项式的浮点数列表),这很奇怪。
如果有人想让 Ocaml 明白程序是“正确的”,我将不胜感激。
PS:很抱歉缺少详细信息,但主题是法语,翻译它需要太多时间。
我发现你只需要更换
|a::b,q -> add (mulscal q a) (mul b [0.]::q)
来自
|a::b,q -> add (mulscal q a) (mul b (0.::q))