2015-02-16 5 views
1

У меня есть пользовательский типа в OCaml:типа Convert (примитивный) назад к примитивному в 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 обратно в строку, чтобы я мог выполнять строковые операции над ним?

+1

Код работает для меня, где именно находится ваш тип ошибки? – PatJ

+0

Да, мой плохой. Не знаете, почему здесь была ошибка. Спрятались с другими вещами, и это сработало. – eatonphil

ответ

2

Ваш код выглядит правильно. Вы должны называть его

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

Да, извините. Он только начал работать после беспорядка с некоторыми другими ошибками. Виноват! Я собирался удалить вопрос, когда вы ответили. Благодаря! – eatonphil

Смежные вопросы