Звучит так, будто вы пытаетесь извлечь что-то типа t
из значения функции типа t -> t
, но я не думаю, что это имеет смысл. Если что-то имеет тип t -> t
, то это функция, которая принимает значение типа t
и возвращает значение того же типа. Однако если у вас есть значение этого (функционального) типа, у вас нет чего-то с двумя частями, каждая из которых имеет тип t
. Даже если вы мыслите абстрактно, функция представляет собой набор пар значений, а не одну пару значений.
Возможно, вы захотите представить пары значений каждый из которых имеет тип т. Это будет выглядеть примерно так:
type t = False | True | Pair of t * t
Теперь вы можете извлечь компоненты пары с помощью сопоставления с образцом. Но пара значений не является функцией (если вы не ограничиваете свое представление о функциях очень тривиальными с одноэлементной областью и диапазоном, я думаю).