Pergunta

Eu estou tentando criar um tipo que tem vários parâmetros de tipo. Eu sei como fazer um tipo com um parâmetro:

type 'a foo = 'a * int

Mas eu preciso ter dois parâmetros, para que eu possa parametrizar a parte 'int'. Como posso fazer isso?

Foi útil?

Solução

A maneira de fazer isso é:

type ('a, 'b) foo = 'a * 'b

parâmetros de tipo não são curry, então você precisará fornecê-los em forma tupla como um único parâmetro. Um bom exemplo disso é o módulo Hashtbl:

type ('a, 'b) t 

O tipo de tabelas de hash de 'tipo um o tipo b'.

Outras dicas

# type ('a, 'b) couple = 'a * 'b ;;

Por exemplo ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top