Точка не соответствует новым строкам?

Когда я пишу регулярное выражение с . в нем он не соответствует новым строкам.

preg_match('/.*+?/') ...

Что мне нужно написать, чтобы соответствовать всем возможным символам, Конец, который прекрасно работает для генерации модулей M ...

У меня следующая ситуация:

module type M = sig type s = ...  end

module Make(P: Something) : (M with type s = P.t) = struct
   type s = P.t
   ...
end

, которая отлично работает для генерации модулей типа M , которые используют специфическую реализацию модулей типа Что-то внутри их реализации.

Теперь предположим, что у меня есть другой модуль, определенный как

module type AU = sig
  val feed : float -> unitv
  val nth : int -> (float -> float)
  val reset : unit -> unit
end

, который имеет различные реализации

module SUAlg : AU = struct ... end
module MLAlg : AU = struct ... end
module ACEAlg : AU = struct ... end

. Вопрос в том, что модуль M должен быть параметризован через Теперь две вещи: модуль Something и модуль AU , так что это что-то вроде

module Make(P: Something) : (M with type s = P.t) = struct
   type s = P.t
   module Alg = MLAlg (* just an example *)
   ...
end

, но я хотел бы иметь универсальный функтор, который дал бы Something и с учетом AU он производит модуль с обеими конкретными вещами. Есть ли способ получить это легко?

Поскольку синтаксис функтора довольно странный, и я Я все еще новичок в этом, я не знаю, может ли то, что я прошу, быть решено простым способом или нет.

Заранее спасибо

14
задан Jack 21 August 2010 в 13:57
поделиться

1 ответ

Да, у функтора может быть несколько аргументов. Синтаксис такой:

module Make_LOffset
            (V:Lattice_With_Isotropy.S)
            (LOffset : Offsetmap.S with type y = V.t and type widen_hint = V.widen_hint) =
struct
   …
end

Функтор затем может быть применен с помощью Make_LOffset (V) (LOffset) .

В этом примере, взятом из существующего кода для обеспечения его синтаксической правильности, Make_LOffset параметризуется двумя модулями V и LOffset соответствующих сигнатур Lattice_With_Isotropy.S и Offsetmap.S . Есть дополнительные ограничения типа между двумя сигнатурами, частью с типом… и частью типа… .

19
ответ дан 1 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

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