以下代码:
exception NoElements of string
let nth(k, list) =
let rec loop count list =
match list with
| head :: _ when count = k -> head
| _ :: tail when count <> k -> loop (count+1) tail
| [] -> raise (NoElements("No Elements"))
loop 0 list
;;
printfn "%A" (nth(2, [1; 1; 2; 3; 5; 8]))
在mac上进行编译时产生以下错误,但在Visual Studio 2010中没有:
nth.fs(10,0):错误FS0191:语法错误。
nth.fs(4,4):错误FS0191:找不到与此'let'匹配的'in'。
答案 0 :(得分:4)
答案 1 :(得分:0)
您需要缩进match
行。
另请注意,列表元素应以分号分隔;你有一个包含六元组的单元素列表。
这是一个有效的版本:
exception NoElements of string
let nth(k, list) =
let rec loop count list =
match list with
| head :: _ when count = k -> head
| _ :: tail when count <> k -> loop (count+1) tail
| [] -> raise (NoElements("No Elements"))
loop 0 list
printfn "%A" (nth(2, [1; 1; 2; 3; 5; 8]))
你的mac有可能有更旧版本的F#吗? fsc.exe报告什么版本? (如果它非常老,请尝试添加“#light”作为第一行。)