Функторы в Ocaml

Попробуйте это решение и дайте мне знать, что оно работает для вас.

ALTER TABLE _secondary
ADD CONSTRAINT FK_title
FOREIGN KEY (title) REFERENCES _primary(title)
12
задан nlucaroni 12 March 2009 в 21:14
поделиться

1 ответ

Необходимо изменить эти две строки

module Set (Elt:Ordered) : S = 
module OrdInt : Ordered =

кому:

module Set (Elt:Ordered) : S with type elt = Elt.t = 
module OrdInt : Ordered with type t = int =

Без них модули не будут иметь подписей, которые выставляют типы elt и t как интервал.

[Править]: set.ml не имеет 'с' битом, потому что существует sml.mli, который объявляет подпись для функтора, и это действительно имеет 'с'. Кроме того, OrdInt не нужно 'с' тем, если Вы явно не указываете подпись для него, как это:

module OrdInt =

Можно также создать набор путем определения модуля на месте:

module IntSet = Set (struct
 type t = int
 let lt a b = a < b
 let eq a b = a = b
 let leq a b = a <= b
end) 
15
ответ дан 2 December 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: