我编写了下面的函数来查看树并返回一个递增顺序的列表,其中包含树中偶数元素的所有索引/下标。但是,我收到有关参数计数器的
let rec GetSubEvenGen tree counter list =
行的语法错误。当提示聊天 GPT 时,它没有发现任何错误。对于为什么会引发语法错误,我将不胜感激。
type 'a tree =
|Lf
|Br of 'a * 'a tree * 'a tree;;
exception Subscript
let rec look = function
| Lf, _ -> raise Subscript
| Br (v, t1, t2), k ->
if k = 1 then v
else if k mod 2 = 0 then
look (t1, k / 2)
else
look (t2, k / 2);;
let rec GetSubEvenGen tree counter list =
try
let element = look (tree, counter) in
if element mod 2 = 0 then
GetSubEvenGen tree (counter + 1) (element::list)
else
GetSubEvenGen tree (counter + 1) (list)
with
Subscript -> List.rev(list);;
let getSubsOfEvens tree = GetSubEvenGen tree 1 [];;```
I tried running this code, I expected no syntax errors to be raised however a syntax was raised.
OCaml 中的函数名称必须以小写字母开头。您的
GetSubEvenGen
名称会导致语法错误。