【发布时间】:2015-10-24 07:32:47
【问题描述】:
我正在使用 F# 编写二进制算术程序。我认为我的代码没有错误,但发生了类型错误。
请检查我的代码并告诉我出了什么问题。
let carry a b c = if a then b||c else b&&c
let sum a b c = (if c then (a=b) else not (a=b))
let rec addc cin (l1:bool list) (l2:bool list) =
if l2.Length>0 then sum(cin,l1.Head,l2.Head)::addc(carry cin,l1.Head,l2.Head), l1.Tail, l2.Tail) else l1
错误信息:
如果 l2.Length>0 那么 sum(cin,l1.Head,l2.Head)::addc(进位(cin,l1.Head,l2.Head),l1.Tail,l2.Tail) 否则 l1
-------------------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^stdin(173,51): 错误 FS0001: 这个表达式应该有类型 ('a * bool * bool -> bool -> bool) 列表但这里有类型 bool 列表 -> bool 列表 -> ('a * bool * bool -> bool -> bool) 列表
【问题讨论】:
标签: f#