Описание тега first-class-modules
Используйте этот тег для вопросов, связанных с передачей модулей в качестве значений, и, в частности, с функцией в [ocaml] упаковки модуля и подписи модуля вместе в качестве значения.
1
ответ
Подпись для этого упакованного модуля не может быть выведена в рекурсивной функции
Я все еще пытаюсь понять, как разделить код при использовании mirage, и это множество модулей первого класса. Я положил все, что мне нужно, в большой урод Context модуль, чтобы не передавать десять модулей всем моим функциям, достаточно одного. У ме…
23 окт '18 в 17:59
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…
09 июл '18 в 22:35
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 То есть…
11 окт '19 в 16:50
3
ответа
Как вернуть экземпляр вложенного типа первоклассного модуля из функции?
Контекст: Я пытаюсь реализовать что-то вроде наблюдаемого шаблона ООП в OCaml с использованием первоклассных модулей. У меня есть проект со списком модулей, и я хочу дополнить его наблюдением без изменений. Чтобы минимизировать дублирование кода, я …
05 июн '20 в 04:31
1
ответ
Как распаковать "тип модуля", упакованный в "тип", обратно в "тип модуля"?
Мы можем упаковать модуль в ценность и распаковать его обратно в модуль (модули как первоклассные граждане). Также, мы можем упаковать тип модуля в тип, но... Можно ли распаковать тип модуля из типа? Если это так - как? Если нет - почему? Следующий …
10 июн '20 в 16:21
1
ответ
Как создать набор элементов, не зная типа элемента?
У меня возникают проблемы с определениями рекурсивных / взаимно ссылочных модулей, пытающихся использовать материал Caml Map / Set. Мне действительно нужны те, которые работают только с типами, а не с модулями. Я чувствую, что это должно быть возмож…
12 май '21 в 19:50
1
ответ
Передача переменной из модуля класса в пользовательскую форму
Привет, я пытаюсь разработать код, в котором несколько командных кнопок вызывают одну и ту же пользовательскую форму. Я создал модуль класса и заставил его работать так, чтобы все они вызывали пользовательскую форму, но мне нужно имя кнопки, передан…
25 сен '21 в 16:07
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