F# 出了点问题
有人能帮我处理这个F#代码吗?我是一个F#初学者,对此我有问题。 非常感谢F# 出了点问题,f#,types,F#,Types,有人能帮我处理这个F#代码吗?我是一个F#初学者,对此我有问题。 非常感谢 let rec rem l xs = match xs with | [] -> [] | x::xs -> if x>l then rem l y else x::(rem l y) let rec minfree1 l:long xs = match xs with | [] -> 1 | _ -> let nxs = rem x
let rec rem l xs = match xs with
| [] -> []
| x::xs -> if x>l then rem l y
else x::(rem l y)
let rec minfree1 l:long xs = match xs with
| [] -> 1
| _ -> let nxs = rem xs l
let l1 = List.length(nxs)
in if l1=l then (l+1)
else minfree1 l1 nxs
let minfree xs = minfree1 (List.length(xs)) xs
到底是什么不起作用?你的代码应该做什么?关于编译器给您的错误,您不了解什么 你应该考虑的一些显而易见的事情是:
- 第一个函数中的
是什么?你从不申报李>y
- F#中没有长的
,而是long
。在第二个函数中,在int64
周围需要括号(l:int64
)()
函数期望rem
是一个列表,但您传递的xs
不是第二个函数中的列表l
- 可能更多
你想达到什么目的?而且你在用低级习惯用法写作,而高级编程会做得更好。比如说
let rem l = List.filter (fun x -> x <= l)
让rem l=List.filter(fun x->x)到底是什么问题?你希望发生什么?我希望它能正常工作。确切的问题通常是键入变量。例如,在代码中,如果l1=l,那么(l+1)向编译器显示此错误:类型“int”与类型“a List”不匹配