Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

ocaml preprocessor that generates a recursive module

License

NotificationsYou must be signed in to change notification settings

flow/ocaml-ppx_gen_rec

Repository files navigation

A ppx rewriter that transforms arecursive moduleexpression into astruct.

If you write a recursive module like this:

module rec Foo : sig  type t = stringend = Foo

The compiler treats it like you wrote:

module rec Foo : sig  type t = stringend = struct  type t = stringend

If you try to useppx_deriving, you get aUndefined_recursive_module exception, becauseppx_deriving generates the signature but not the implementation:

module rec Foo : sig  type t = string [@@deriving show]end = Foo(* is like writing *)module rec Foo : sig  type t = string  val show: t -> stringend = struct  type t = string  let show _ = raise Undefined_recursive_moduleend

Useppx_gen_rec beforeppx_deriving to generate an explicit struct, which will causeppx_deriving to generate an implementation:

module%gen rec Foo : sig  type t = string [@@deriving show]end = Foo(* becomes... *)module rec Foo : sig  type t = string [@@deriving show]end = struct  type t = string [@@deriving show]end(* which becomes... *)module rec Foo : sig  type t = string  val show: t -> stringend = struct  type t = string  let show t = (* show stuff *)end

Usage

Just usemodule%gen rec instead ofmodule rec:

module%gen rec Foo : sig  type t = string [@@deriving show]end = Foo

License

ocaml-ppx_gen_rec is MIT licensed, as found in the LICENSE file.

About

ocaml preprocessor that generates a recursive module

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp