Windows无法搭建OCaml环境,在线编译器单文件模块语法错误求助
OCaml脚本模块定义后语法错误的解决办法
你的问题出在OCaml对编译单元的语法规则上:.ml文件默认作为编译单元处理,其中只能包含结构项(模块定义、let绑定、类型定义等),而直接写的print_string "Hello, World!"属于顶层表达式,不属于结构项,所以在模块定义(结构项)之后直接放置会触发语法错误。
修改后的代码如下:
module Atom = struct let hello name = print_string ("Hello " ^ name) end let () = print_string "Hello, World!"; Atom.hello "Florian"
关键说明:
- 把所有需要执行的代码包裹在
let () = ...中,将其转化为顶层let绑定(结构项的合法类型),就能符合OCaml的语法要求。 - 脚本或编译型代码中不需要在语句末尾加
;;,这是交互式toplevel环境的用法,省略后代码更简洁。
内容的提问来源于stack exchange,提问作者flori10
相关产品推荐
相关产品推荐

