package ppx_compare

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
val type_ : with_local:bool -> hide:bool -> loc:Ppxlib.Location.t -> Ppxlib.core_type -> Ppxlib.core_type

type_ ~with_local ~hide ty is ty -> ty -> result_type where result_type is int for compare and bool for equal.

hide controls whether some [@merlin.hide] attributes should be added.

with_local adds local_ annotation around the input types.

val core_type : with_local:bool -> Ppxlib.core_type -> Ppxlib.expression

core_type ~with_local ty is an expression of type ty -> ty -> result_type

~with_local:true will make the arguments local

In str_type_decl and sig_type_decl, passing true for the third argument generates additional functions that take local arguments. We generate, e.g. val compare__local : local_ t -> local_ t -> int in addition to compare in order to incrementally grow the portion of the tree which supports local comparison.

We need both compare and compare__local since neither has a stronger type than the other. In the case of polymorphic types, this is due to the fact that compare__local requires local compare functions for each of its type arguments, and in the case of monomorphic types, this is due to the possibility of partial application producing a local closure.

module Attrs : sig ... end
val str_attributes : Ppxlib.Attribute.packed list
OCaml

Innovation. Community. Security.