Трудно ответить на ваш вопрос, потому что не ясно, о чем вы спрашиваете. Тип 'a ptree
является параметризованным типом. Внутри определения ptree
параметр имеет имя 'a
.
Функция для обработки такого дерева будет выглядеть примерно так:
let myfun ptree =
let (cfun, tree) = ptree in
(* Call the comparison function under the name cfun *)
(* Access the tree itself under the name tree *)
Единственный способ написать такое функция полиморфно , т. е. она должна делать одно и то же независимо от типа параметра 'a
. Поэтому вам не нужно ссылаться на тип в любом месте кода.
Вы можете ссылаться на него, если хотите, присваивая тип ptree
и другим переменным в вашем коде. Как правило, в этом нет необходимости, но если вы хотите сделать это, это может выглядеть примерно так:
let myfun2 (ptree : 'a ptree) =
let (cfun, tree : 'a comparisonfn * 'a tree) = ptree in
(* Same as above, but you have the name 'a for the type *)
Надеюсь, это поможет хоть немного прояснить ситуацию.