这个OCaml函数返回的是什么



据我所知,OCaml不需要显式return语句来从函数中生成值。函数的最后一行是返回的内容。

在这种情况下,有人能告诉我以下函数foo返回了什么吗?它似乎正在返回一个数据流。它是否返回lexer

and foo ?(input = false) =
lexer
| 'x' _
-> let y = get_func lexbuf
get_text y
| ',' -> get_func lexbuf
| _ -> get_text lexbuf

我正在尝试编辑下面的函数bar,以返回数据流,这样我就可以在另一个函数中用bar替换foo。然而,bar似乎有多个lexer,这阻止了这种返回。如何以类似于foo的方式重写bar以返回数据流?

let bar cmd lexbuf =
let buff = Buffer.create 0 in
let quot plus =
lexer
| "<" -> if plus then Buffer.add_string b "<" quot plus lexbuf
and unquot plus =
lexer
| ">" -> if plus then Buffer.add_string b ">" unquot plus lexbuf
in
match unquot true lexbuf with
| e -> force_text cmd e

首先,您的代码可能使用了一个旧的camlp4语法扩展,您应该精确地指出这一点。

其次,foo返回与get_textget_funct相同类型的值。如果没有这些函数的代码,就不可能说得更多。

第三,

Buffer.add_string b ">" unquot plus lexbuf

打字不正确。你是不是少了括号:

Buffer.add_string b ">" (unquot plus lexbuf)

相关内容

最新更新