You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

odoc能否显示函数默认参数?是否有对应命令行选项?

如何让odoc显示函数的默认参数值?

我定义了如下OCaml函数:

let rec eval ?(env : environment = []) (t : term) : value =
  match t with
  | TVar idx -> List.nth env idx
  | TLam body -> VClosure (env, body)
  | TAppl (m, n) ->
    let rator = eval ~env m in
    let rand = eval ~env n in
    (match rator with
     | VClosure (env', body) -> eval ~env:(rand :: env') body
     | VNeutral neutral -> VNeutral (NAppl (neutral, rand)))
;;

使用dune build @doc生成文档时,希望env参数的默认值[]能在文档中显示,但实际生成的文档只显示:

val eval : ?env:environment -> term -> value

解决方案

目前odoc没有专门的命令行选项来强制显示默认参数值,但可以通过以下两种方式实现需求:

  • 手动添加文档注释:在函数上方添加包含默认参数信息的OCamldoc注释,odoc会提取并展示这些内容:

    (** 计算 term 的值,默认环境为 []
        @param env 计算时使用的环境,默认值为 [] *)
    let rec eval ?(env : environment = []) (t : term) : value =
      (* ... 函数实现 ... *)
    ;;
    
  • 显式在签名中定义默认参数:如果项目使用.mli接口文件,需要在签名里完整写出默认参数的定义,而不是简写形式:

    val eval : ?(env:environment = []) -> term -> value
    

    这样odoc生成文档时会直接显示带默认值的签名。

内容的提问来源于stack exchange,提问作者hirrolot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:15:35