Ocaml 的引入和使用;与;;

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

我在下面有这段代码。我对

let in
语法应该如何工作感到有点困惑。我假设
let in
允许您在
in
的范围内使用该变量。虽然,我不明白如何在不进入
in
块的情况下访问表变量。我是否以错误的方式处理了整个代码块?我只是想了解
let in
以及何时到
;
;;
.

let first_nonrepeating lst =
    let store tbl value =
        if Hashtbl.mem tbl value then
            let seen_count = Hashtbl.find tbl value
            in Hashtbl.replace tbl value (seen_count+1)
        else
            Hashtbl.add tbl value 1 in
    let table = Hashtbl.create 100 in
    let store_table = store table in
    List.iter store_table lst;

    let rec findOne lstX =
        match lstX with
        | [] -> -10000
        | h :: t -> if Hashtbl.find table h = 1 then
                        h
                    else
                        findOne t in
    findOne lst;;

如果我在 iter 之后再敲一个

in
然后它会抛出一个语法错误。我期待它能工作,因为需要 List.iter 才能使用该表。不知何故,我可以通过使用
;
在块中的范围之外使用表格。这是如何运作的?上面的代码可以编译,我只是有点迷失了如何使用
;
in

scope ocaml let
© www.soinside.com 2019 - 2024. All rights reserved.