将(原语的)类型转换回OCaml中的原语

将(原语的)类型转换回OCaml中的原语,ocaml,Ocaml,我在OCaml中有一个自定义类型: type d = DefaultTemplateDir | TemplateDir of string 随后在程序中,我应用了以下内容: let get_full_name ?(template_dir: d = DefaultTemplateDir) file_name = let dir = (match template_dir with | DefaultTemplateDir -> "" | TemplateDir c

我在OCaml中有一个自定义类型:

type d = DefaultTemplateDir | TemplateDir of string
随后在程序中,我应用了以下内容:

let get_full_name ?(template_dir: d = DefaultTemplateDir) file_name =
    let dir = (match template_dir with
    | DefaultTemplateDir -> ""
    | TemplateDir custom_dir -> custom_dir) in
    dir ^ file_name
但我这里有一个错误:

This expression has type d but an expression was expected of type string.

如何将TemplateDir类型转换回字符串,以便对其执行字符串操作?

您的代码看起来是正确的。你需要称之为

get_full_name ~template_dir:(TemplateDir "template-dir") "file-name"

代码对我有用,你的类型错误在哪里?是的,我的错。不知道这里为什么会出错。摆弄了一些其他的东西,它成功了。是的,我很抱歉。它在处理了一些其他错误后才开始工作。我的错!你回答时,我正要删除这个问题。谢谢