Ocaml 树搜索函数中第 15 行字符 27-34 的语法错误

问题描述 投票:0回答:1

我编写了下面的函数来查看树并返回一个递增顺序的列表,其中包含树中偶数元素的所有索引/下标。但是,我收到有关参数计数器的

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.
syntax ocaml
1个回答
0
投票

OCaml 中的函数名称必须以小写字母开头。您的

GetSubEvenGen
名称会导致语法错误。

© www.soinside.com 2019 - 2024. All rights reserved.