簡體   English   中英

為什么這個助手 function 給我一個未綁定的值錯誤?

[英]Why does this helper function give me an unbound value error?

我有一個輔助函數,如下所示:

let rec helper2 nfa l symb res =
        match l with
        | [] -> res
        | h::t -> res@(transitions nfa.trans symb h) in
                       helper2 nfa t symb res 

現在,當我嘗試編譯它時,它在最后一行給我一個未綁定的值錯誤,說 nfa 是未綁定的值。 我只是想使用具有相同 nfa 的遞歸 function 所以我不知道為什么我一直收到這個錯誤。 我在代碼的不同部分也多次遇到此錯誤。 任何幫助表示贊賞!

@octachron 告訴你的是,OCaml 中沒有如下所示的表達式:

a in b

但這就是您的代碼似乎要求的:

res@(transitions nfa.trans symb h) in
                   helper2 nfa t symb res

我們很難提供更多幫助,因為您的代碼應該做什么並不完全清楚。 假設對helper2的遞歸調用應該為res返回一個新值,並且您想在當前代碼具有res的地方使用這個新值。 然后這樣的事情可能會起作用:

let res' = helper2 nfa t symb res in
res' @ transitions nfa.trans symb h

expr2 中沒有expr1 in expr2let var = expr1 in expr2形式的表達式,如下所示。

在 OCaml(以及一般的函數式語言)中,您需要考慮定義新變量而不是修改現有變量。 無法對res類的變量進行修改; 它永遠綁定到一個特定的值。 但是您可以計算一個新值並改用新值。

你的格式在騙你。 function 的正確格式是:

let rec helper2 nfa l symb res =
  match l with
  | [] -> res
  | h::t -> res@(transitions nfa.trans symb h)
in
helper2 nfa t symb res 

這可能不是你想要的。 在您的工作流程中設置自動格式化(或縮進)工具可能很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM