Описание тега first-class-modules

Используйте этот тег для вопросов, связанных с передачей модулей в качестве значений, и, в частности, с функцией в [ocaml] упаковки модуля и подписи модуля вместе в качестве значения.
1 ответ

Подпись для этого упакованного модуля не может быть выведена в рекурсивной функции

Я все еще пытаюсь понять, как разделить код при использовании mirage, и это множество модулей первого класса. Я положил все, что мне нужно, в большой урод Context модуль, чтобы не передавать десять модулей всем моим функциям, достаточно одного. У ме…
1 ответ

Передать модули в другие модули

Я пытаюсь использовать Irmin с MirageOS, и я борюсь со всеми этими модулями. Я взглянул на источники Canopy, чтобы попытаться выяснить, как предполагается использовать Irmin, и у меня есть это: let start console clock resolver conduit = let (module …
06 авг '18 в 14:38
1 ответ

Конструктор типа "..." выходит из области видимости при использовании модулей первого класса

Учитывая простую фабрику: module type Factory = sig type t val create : unit -> t end module FactoryImpl : Factory = struct type t = string let create: unit -> t = fun () -> "aaa" end let factory: (module Factory) = (module FactoryImpl) let…
4 ответа

Что (точно) являются модулями "первого класса"?

Я часто читаю, что некоторые языки программирования поддерживают модули первого класса (OCaml, Scala, TypeScript[?]), И недавно наткнулся на ответ о SO, ссылаясь на модули в качестве первоклассных граждан среди отличительных особенностей Scala. Я ду…
13 июн '19 в 10:15
1 ответ

Распаковка первоклассного модуля, ограниченного переменной типа

Я пытаюсь написать функцию, которая в основном выглядит так: module type M = sig type t val doStuff : t -> unit end let f : 'a. 'a -> (module M with type t = 'a) -> unit = fun value (module MSomething) -> MSomething.doStuff value То есть…
3 ответа

Как вернуть экземпляр вложенного типа первоклассного модуля из функции?

Контекст: Я пытаюсь реализовать что-то вроде наблюдаемого шаблона ООП в OCaml с использованием первоклассных модулей. У меня есть проект со списком модулей, и я хочу дополнить его наблюдением без изменений. Чтобы минимизировать дублирование кода, я …
1 ответ

Как распаковать "тип модуля", упакованный в "тип", обратно в "тип модуля"?

Мы можем упаковать модуль в ценность и распаковать его обратно в модуль (модули как первоклассные граждане). Также, мы можем упаковать тип модуля в тип, но... Можно ли распаковать тип модуля из типа? Если это так - как? Если нет - почему? Следующий …
10 июн '20 в 16:21
1 ответ

Как создать набор элементов, не зная типа элемента?

У меня возникают проблемы с определениями рекурсивных / взаимно ссылочных модулей, пытающихся использовать материал Caml Map / Set. Мне действительно нужны те, которые работают только с типами, а не с модулями. Я чувствую, что это должно быть возмож…
12 май '21 в 19:50
1 ответ

Передача переменной из модуля класса в пользовательскую форму

Привет, я пытаюсь разработать код, в котором несколько командных кнопок вызывают одну и ту же пользовательскую форму. Я создал модуль класса и заставил его работать так, чтобы все они вызывали пользовательскую форму, но мне нужно имя кнопки, передан…
0 ответов

Как создать модули класса для хранения и чтения данных из класса модулей в vba

У меня есть проект для расчета охлаждающей нагрузки в комнате и загрузки результатов для интерфейса Excel. Итак, я думаю, что буду делать следующее: Конечно, создавайте функции для вычислений. Создавайте модули класса, такие как: условное помещение …
21 окт '21 в 10:05
0 ответов

Включить сигнатуру модуля и значение этого типа модуля в сигнатуру функции

Я просто хочу иметь простую функцию, которая является общей для Hashtbls, поэтому я написал это: let iter_htbl (type a) (module H : Hashtbl.S with type key = a) htbl = H.iter (fun _key _v -> ()) htbl Что дает мне следующую ошибку: 53 | H.iter (fu…
03 авг '22 в 15:57
0 ответов

Приведение подтипа с помощью первоклассных модулей

Учитывая следующие сигнатуры модуля, где subsumes: module type A = sig type t end module type B = sig type t val x: t end Обычно любой модуль, удовлетворяющий условиямBтогда тоже удовлетворитA. Однако это не распространяется автоматически на первокл…
14 сен '23 в 12:52