Module TaglessFinal.Pattern

This module provides a type that represents a pattern for a given match branch. See PEP 622.

type ('constant, 'expr, 'identifier, 'location, 'pattern) t = private {
match_value : location:'location -> value:'expr -> 'pattern;

Represent a pattern that matches constants, except None, True, and False literal.

match_singleton : location:'location -> value:'constant -> 'pattern;

Represent a pattern that matches None, True, and False (i.e. literals that are compared by identity instead of equality).

match_sequence : location:'location -> patterns:'pattern list -> 'pattern;

Represent a pattern that matches a sequence of other patterns.

match_mapping : location:'location -> keys:'expr list -> patterns:'pattern list -> rest:'identifier option -> 'pattern;

Represent a pattern that matches a map of patterns.

match_class : location:'location -> cls:'expr -> patterns:'pattern list -> kwd_attrs:'identifier list -> kwd_patterns:'pattern list -> 'pattern;

Represent a pattern that destructuring arbitrary objects.

match_star : location:'location -> name:'identifier option -> 'pattern;

This pattern can only be nested in another match_sequence pattern, representing the "rest" of the sequence

match_as : location:'location -> pattern:'pattern option -> name:'identifier option -> 'pattern;

Represent a capture or wildcard pattern (e.g. case x as y, case x, or case _).

match_or : location:'location -> patterns:'pattern list -> 'pattern;

Represent a pattern that matches a combination of other patterns.

}
val make : match_value:(location:'a -> value:'b -> 'c) -> match_singleton:(location:'a -> value:'d -> 'c) -> match_sequence:(location:'a -> patterns:'c list -> 'c) -> match_mapping:(location:'a -> keys:'b list -> patterns:'c list -> rest:'e option -> 'c) -> match_class:(location:'a -> cls:'b -> patterns:'c list -> kwd_attrs:'e list -> kwd_patterns:'c list -> 'c) -> match_star:(location:'a -> name:'e option -> 'c) -> match_as:(location:'a -> pattern:'c option -> name:'e option -> 'c) -> match_or:(location:'a -> patterns:'c list -> 'c) -> unit -> ('d'b'e'a'c) t

Constructor of t.