码:
let rec get_val (x, n) = match x with
[] -> -1
| if (n=0) then (h::_) -> h
else (_::t) -> get_val(t, n-1)
;;
Run Code Online (Sandbox Code Playgroud)
错误信息:
Characters 55-57:
| if (n=0) then (h::_) -> h
^^
Error: Syntax error
Run Code Online (Sandbox Code Playgroud)
我认为问题是你试图将if表达式放入模式匹配语句中.每个的左侧->需要对应于有效的模式x.
试试这个:
let rec get_val (x, n) = match x with
[] -> -1
| h::t -> if (n=0) then h
else get_val(t, n-1)
;;
Run Code Online (Sandbox Code Playgroud)
你不能混合使用if和match,你必须使用if之后的模式,如已经提出的那样,或者使用保护模式,如:
let rec get_val x n =
match x with
[] -> -1
| h::_ when n=0 -> h
| _::t -> get_val t (n-1)
;;
Run Code Online (Sandbox Code Playgroud)
另请注意,ocaml是curry,并且通常不会在函数的参数周围加上括号
| 归档时间: |
|
| 查看次数: |
451 次 |
| 最近记录: |