diff --git a/implementations/javascript/packages/schema/src/gen/schema.ts b/implementations/javascript/packages/schema/src/gen/schema.ts
index d05352b..4083c91 100644
--- a/implementations/javascript/packages/schema/src/gen/schema.ts
+++ b/implementations/javascript/packages/schema/src/gen/schema.ts
@@ -108,16 +108,16 @@ export type AtomKind = (
export type NamedAlternative = {"variantLabel": string, "pattern": Pattern};
export type NamedSimplePattern = (
- {"_variant": "named", "value": NamedSimplePattern_} |
+ {"_variant": "named", "value": Binding} |
{"_variant": "anonymous", "value": SimplePattern}
);
export type NamedPattern = (
- {"_variant": "named", "value": NamedSimplePattern_} |
+ {"_variant": "named", "value": Binding} |
{"_variant": "anonymous", "value": Pattern}
);
-export type NamedSimplePattern_ = {"name": symbol, "pattern": SimplePattern};
+export type Binding = {"name": symbol, "pattern": SimplePattern};
export type Ref = {"module": ModulePath, "name": symbol};
@@ -209,16 +209,16 @@ export namespace AtomKind {
export function NamedAlternative({variantLabel, pattern}: {variantLabel: string, pattern: Pattern}): NamedAlternative {return {"variantLabel": variantLabel, "pattern": pattern};}
export namespace NamedSimplePattern {
- export function named(value: NamedSimplePattern_): NamedSimplePattern {return {"_variant": "named", "value": value};};
+ export function named(value: Binding): NamedSimplePattern {return {"_variant": "named", "value": value};};
export function anonymous(value: SimplePattern): NamedSimplePattern {return {"_variant": "anonymous", "value": value};};
}
export namespace NamedPattern {
- export function named(value: NamedSimplePattern_): NamedPattern {return {"_variant": "named", "value": value};};
+ export function named(value: Binding): NamedPattern {return {"_variant": "named", "value": value};};
export function anonymous(value: Pattern): NamedPattern {return {"_variant": "anonymous", "value": value};};
}
-export function NamedSimplePattern_({name, pattern}: {name: symbol, pattern: SimplePattern}): NamedSimplePattern_ {return {"name": name, "pattern": pattern};}
+export function Binding({name, pattern}: {name: symbol, pattern: SimplePattern}): Binding {return {"name": name, "pattern": pattern};}
export function Ref({module, name}: {module: ModulePath, name: symbol}): Ref {return {"module": module, "name": name};}
@@ -858,9 +858,9 @@ export function asNamedSimplePattern(v: _val): NamedSimplePattern {
}
export function toNamedSimplePattern(v: _val): undefined | NamedSimplePattern {
- let _tmp0: (NamedSimplePattern_) | undefined;
+ let _tmp0: (Binding) | undefined;
let result: undefined | NamedSimplePattern;
- _tmp0 = toNamedSimplePattern_(v);
+ _tmp0 = toBinding(v);
if (_tmp0 !== void 0) {result = {"_variant": "named", "value": _tmp0};};
if (result === void 0) {
let _tmp1: (SimplePattern) | undefined;
@@ -872,7 +872,7 @@ export function toNamedSimplePattern(v: _val): undefined | NamedSimplePattern {
export function fromNamedSimplePattern(_v: NamedSimplePattern): _val {
switch (_v._variant) {
- case "named": {return fromNamedSimplePattern_(_v.value);};
+ case "named": {return fromBinding(_v.value);};
case "anonymous": {return fromSimplePattern(_v.value);};
};
}
@@ -884,9 +884,9 @@ export function asNamedPattern(v: _val): NamedPattern {
}
export function toNamedPattern(v: _val): undefined | NamedPattern {
- let _tmp0: (NamedSimplePattern_) | undefined;
+ let _tmp0: (Binding) | undefined;
let result: undefined | NamedPattern;
- _tmp0 = toNamedSimplePattern_(v);
+ _tmp0 = toBinding(v);
if (_tmp0 !== void 0) {result = {"_variant": "named", "value": _tmp0};};
if (result === void 0) {
let _tmp1: (Pattern) | undefined;
@@ -898,19 +898,19 @@ export function toNamedPattern(v: _val): undefined | NamedPattern {
export function fromNamedPattern(_v: NamedPattern): _val {
switch (_v._variant) {
- case "named": {return fromNamedSimplePattern_(_v.value);};
+ case "named": {return fromBinding(_v.value);};
case "anonymous": {return fromPattern(_v.value);};
};
}
-export function asNamedSimplePattern_(v: _val): NamedSimplePattern_ {
- let result = toNamedSimplePattern_(v);
- if (result === void 0) throw new TypeError(`Invalid NamedSimplePattern_: ${_.stringify(v)}`);
+export function asBinding(v: _val): Binding {
+ let result = toBinding(v);
+ if (result === void 0) throw new TypeError(`Invalid Binding: ${_.stringify(v)}`);
return result;
}
-export function toNamedSimplePattern_(v: _val): undefined | NamedSimplePattern_ {
- let result: undefined | NamedSimplePattern_;
+export function toBinding(v: _val): undefined | Binding {
+ let result: undefined | Binding;
if (_.Record.isRecord<_val, _.Tuple<_val>, _embedded>(v)) {
let _tmp0: (null) | undefined;
_tmp0 = _.is(v.label, $named) ? null : void 0;
@@ -927,7 +927,7 @@ export function toNamedSimplePattern_(v: _val): undefined | NamedSimplePattern_
return result;
}
-export function fromNamedSimplePattern_(_v: NamedSimplePattern_): _val {return _.Record($named, [_v["name"], fromSimplePattern(_v["pattern"])]);}
+export function fromBinding(_v: Binding): _val {return _.Record($named, [_v["name"], fromSimplePattern(_v["pattern"])]);}
export function asRef(v: _val): Ref {
let result = toRef(v);
diff --git a/implementations/javascript/packages/schema/src/reader.ts b/implementations/javascript/packages/schema/src/reader.ts
index 7f47ba4..8996b9d 100644
--- a/implementations/javascript/packages/schema/src/reader.ts
+++ b/implementations/javascript/packages/schema/src/reader.ts
@@ -171,7 +171,7 @@ function parseDefinition(name: symbol, pos: Position | null, body: Array)
const p = parsePattern(name, input);
if (n !== false) {
if (p._variant !== 'SimplePattern') namedMustBeSimple(position(input[0]));
- return M.NamedPattern.named(M.NamedSimplePattern_({ name: n, pattern: p.value }));
+ return M.NamedPattern.named(M.Binding({ name: n, pattern: p.value }));
}
return M.NamedPattern.anonymous(p);
}
@@ -330,7 +330,7 @@ function parsePattern(name: symbol, body0: Array): Pattern {
});
function _maybeNamed(
- named: (p: M.NamedSimplePattern_) => R,
+ named: (p: M.Binding) => R,
anonymous: (p: P) => R,
recur: (b: Input) => P,
literalName?: Input): (b: Input) => R
@@ -348,7 +348,7 @@ function parsePattern(name: symbol, body0: Array): Pattern {
if (name === false) {
return anonymous(recur(b));
}
- return named(M.NamedSimplePattern_({ name, pattern: parseSimple(b, p => p, () =>
+ return named(M.Binding({ name, pattern: parseSimple(b, p => p, () =>
namedMustBeSimple(position(b))) }));
};
}
diff --git a/implementations/racket/preserves/preserves-schema/checker.rkt b/implementations/racket/preserves/preserves-schema/checker.rkt
index dd5c977..5b7547c 100644
--- a/implementations/racket/preserves/preserves-schema/checker.rkt
+++ b/implementations/racket/preserves/preserves-schema/checker.rkt
@@ -54,7 +54,7 @@
(define (check-named-pattern context scope p)
(match (unwrap p)
- [(NamedSimplePattern_ n p)
+ [(Binding n p)
(check-binding context scope n)
(check-pattern (cons n context) scope p #t)]
[p (check-pattern context scope p #f)]))
diff --git a/implementations/racket/preserves/preserves-schema/compiler.rkt b/implementations/racket/preserves/preserves-schema/compiler.rkt
index 75ea3fb..c3e1c31 100644
--- a/implementations/racket/preserves/preserves-schema/compiler.rkt
+++ b/implementations/racket/preserves/preserves-schema/compiler.rkt
@@ -59,7 +59,7 @@
[(Definition-Pattern p) (walk p)]
[(Definition-or p0 p1 pN) (for-each walk (list* p0 p1 pN))]
[(Definition-and p0 p1 pN) (for-each walk (list* p0 p1 pN))]
- [(NamedSimplePattern_ n p) (walk p)]
+ [(Binding n p) (walk p)]
[(NamedAlternative _ p) (walk p)]
[(SimplePattern-seqof p) (walk p)]
[(SimplePattern-setof p) (walk p)]
diff --git a/implementations/racket/preserves/preserves-schema/gen/schema.rkt b/implementations/racket/preserves/preserves-schema/gen/schema.rkt
index 17dafe8..a6efbc6 100644
--- a/implementations/racket/preserves/preserves-schema/gen/schema.rkt
+++ b/implementations/racket/preserves/preserves-schema/gen/schema.rkt
@@ -96,6 +96,30 @@
(_ eof)))
(define parse-AtomKind!
(parse-success-or-error 'parse-AtomKind parse-AtomKind))
+ (struct
+ Binding
+ (name pattern)
+ #:transparent
+ #:methods
+ gen:preservable
+ ((define/generic *->preserve ->preserve)
+ (define (->preserve preservable)
+ (match
+ preservable
+ ((Binding ?name ?pattern)
+ (record 'named (list (*->preserve ?name) (*->preserve ?pattern))))))))
+ (define (parse-Binding input)
+ (match
+ input
+ ((and dest
+ (record
+ 'named
+ (list
+ (and ?name (? symbol?))
+ (app parse-SimplePattern (and ?pattern (not (== eof)))))))
+ (Binding ?name ?pattern))
+ (_ eof)))
+ (define parse-Binding! (parse-success-or-error 'parse-Binding parse-Binding))
(struct
Bundle
(modules)
@@ -467,8 +491,7 @@
(define (parse-NamedPattern input)
(match
input
- ((app parse-NamedSimplePattern_ (and dest (not (== eof))))
- (NamedPattern-named dest))
+ ((app parse-Binding (and dest (not (== eof)))) (NamedPattern-named dest))
((app parse-Pattern (and dest (not (== eof))))
(NamedPattern-anonymous dest))
(_ eof)))
@@ -499,7 +522,7 @@
(define (parse-NamedSimplePattern input)
(match
input
- ((app parse-NamedSimplePattern_ (and dest (not (== eof))))
+ ((app parse-Binding (and dest (not (== eof))))
(NamedSimplePattern-named dest))
((app parse-SimplePattern (and dest (not (== eof))))
(NamedSimplePattern-anonymous dest))
@@ -508,33 +531,6 @@
(parse-success-or-error
'parse-NamedSimplePattern
parse-NamedSimplePattern))
- (struct
- NamedSimplePattern_
- (name pattern)
- #:transparent
- #:methods
- gen:preservable
- ((define/generic *->preserve ->preserve)
- (define (->preserve preservable)
- (match
- preservable
- ((NamedSimplePattern_ ?name ?pattern)
- (record 'named (list (*->preserve ?name) (*->preserve ?pattern))))))))
- (define (parse-NamedSimplePattern_ input)
- (match
- input
- ((and dest
- (record
- 'named
- (list
- (and ?name (? symbol?))
- (app parse-SimplePattern (and ?pattern (not (== eof)))))))
- (NamedSimplePattern_ ?name ?pattern))
- (_ eof)))
- (define parse-NamedSimplePattern_!
- (parse-success-or-error
- 'parse-NamedSimplePattern_
- parse-NamedSimplePattern_))
(define (Pattern? p)
(or (Pattern-SimplePattern? p) (Pattern-CompoundPattern? p)))
(struct
diff --git a/implementations/racket/preserves/preserves-schema/parser.rkt b/implementations/racket/preserves/preserves-schema/parser.rkt
index 8b30bf8..17e05e2 100644
--- a/implementations/racket/preserves/preserves-schema/parser.rkt
+++ b/implementations/racket/preserves/preserves-schema/parser.rkt
@@ -20,7 +20,7 @@
(define (pattern->match-pattern pattern dest-pat-stx)
(match (unwrap pattern)
- [(NamedSimplePattern_ n p) (pattern->match-pattern p (maybe-dest dest-pat-stx (escape n)))]
+ [(Binding n p) (pattern->match-pattern p (maybe-dest dest-pat-stx (escape n)))]
[(SimplePattern-any) dest-pat-stx]
[(SimplePattern-atom atom-kind)
(maybe-dest dest-pat-stx
diff --git a/implementations/racket/preserves/preserves-schema/reader.rkt b/implementations/racket/preserves/preserves-schema/reader.rkt
index 9118516..4803173 100644
--- a/implementations/racket/preserves/preserves-schema/reader.rkt
+++ b/implementations/racket/preserves/preserves-schema/reader.rkt
@@ -95,7 +95,7 @@
[n
(when (not (Pattern-SimplePattern? p))
(error 'parse-def-dsl "Named pattern in 'and' must be simple: ~a" (input->string input)))
- (NamedPattern-named (NamedSimplePattern_ n (Pattern-SimplePattern-value p)))]))
+ (NamedPattern-named (Binding n (Pattern-SimplePattern-value p)))]))
(define (or-branch input)
(define p (parse-pattern-dsl name input))
(match (or (find-name input) (find-name (car input)))
@@ -203,7 +203,7 @@
values
(lambda () (error 'parse-pattern-dsl "Named pattern must be simple: ~a"
(input->string b))))))
- (knamed (NamedSimplePattern_ n p)))
+ (knamed (Binding n p)))
(kanonymous (recur b))))
(define maybe-named
diff --git a/implementations/racket/preserves/preserves-schema/schema.prs b/implementations/racket/preserves/preserves-schema/schema.prs
index 2cf2df8..5db39dc 100644
--- a/implementations/racket/preserves/preserves-schema/schema.prs
+++ b/implementations/racket/preserves/preserves-schema/schema.prs
@@ -83,10 +83,10 @@ AtomKind = =Boolean / =Float / =Double / =SignedInteger / =String / =ByteString
NamedAlternative = [@variantLabel string @pattern Pattern].
-NamedSimplePattern = @named NamedSimplePattern_ / @anonymous SimplePattern .
-NamedPattern = @named NamedSimplePattern_ / @anonymous Pattern .
+NamedSimplePattern = @named Binding / @anonymous SimplePattern .
+NamedPattern = @named Binding / @anonymous Pattern .
-NamedSimplePattern_ = .
+Binding = .
Ref = [.
ModulePath = [symbol ...].
diff --git a/implementations/racket/preserves/preserves-schema/type.rkt b/implementations/racket/preserves/preserves-schema/type.rkt
index b60bb16..5112ac0 100644
--- a/implementations/racket/preserves/preserves-schema/type.rkt
+++ b/implementations/racket/preserves/preserves-schema/type.rkt
@@ -66,7 +66,7 @@
(define (gather-fields named-pat acc)
(match (unwrap named-pat)
- [(NamedSimplePattern_ n p)
+ [(Binding n p)
(match (pattern-ty p)
[(ty-unit) acc]
[ty (cons (ty-field n ty p) acc)])]
diff --git a/implementations/racket/preserves/preserves-schema/unparser.rkt b/implementations/racket/preserves/preserves-schema/unparser.rkt
index 920c089..598ca58 100644
--- a/implementations/racket/preserves/preserves-schema/unparser.rkt
+++ b/implementations/racket/preserves/preserves-schema/unparser.rkt
@@ -12,7 +12,7 @@
(define (pattern->unparser pattern src-stx)
(match (unwrap pattern)
- [(NamedSimplePattern_ n p) (pattern->unparser p (escape n))]
+ [(Binding n p) (pattern->unparser p (escape n))]
[(SimplePattern-any) `(*->preserve ,src-stx)]
[(SimplePattern-atom (AtomKind-Float)) `(->float (*->preserve ,src-stx))]
[(SimplePattern-atom (AtomKind-Double)) `(exact->inexact (*->preserve ,src-stx))]
diff --git a/preserves-schema.md b/preserves-schema.md
index 96ba373..8f61cfd 100644
--- a/preserves-schema.md
+++ b/preserves-schema.md
@@ -4,7 +4,7 @@ title: "Preserves Schema"
---
Tony Garnock-Jones
-June 2021. Version 0.1.1.
+June 2021. Version 0.1.2.
[abnf]: https://tools.ietf.org/html/rfc7405
@@ -441,9 +441,9 @@ Explicitly-named subpatterns are always `SimplePattern`s; but,
depending on context, if a name is omitted, the pattern may be a
`Pattern` or may be restricted to `SimplePattern` as well:
- NamedSimplePattern = @named NamedSimplePattern_ / @anonymous SimplePattern .
- NamedPattern = @named NamedSimplePattern_ / @anonymous Pattern .
- NamedSimplePattern_ = .
+ NamedSimplePattern = @named Binding / @anonymous SimplePattern .
+ NamedPattern = @named Binding / @anonymous Pattern .
+ Binding = .
[^todo-semantics-of-bundles]: The semantics of module path references
remain to be specified!
@@ -486,7 +486,7 @@ metaschema.
Bundle: >]>>,
- NamedSimplePattern_: >,
>
]>>,
@@ -504,7 +504,7 @@ metaschema.
]>,
NamedSimplePattern: ],
+ ["named", ][],
["anonymous", ][]
]>,
@@ -530,7 +530,7 @@ metaschema.
Version: ,
NamedPattern: ],
+ ["named", ][],
["anonymous", ][]
]>,
@@ -651,16 +651,16 @@ definitions for the metaschema.
export type NamedAlternative = {"variantLabel": string, "pattern": Pattern};
export type NamedSimplePattern = (
- {"_variant": "named", "value": NamedSimplePattern_} |
+ {"_variant": "named", "value": Binding} |
{"_variant": "anonymous", "value": SimplePattern}
);
export type NamedPattern = (
- {"_variant": "named", "value": NamedSimplePattern_} |
+ {"_variant": "named", "value": Binding} |
{"_variant": "anonymous", "value": Pattern}
);
- export type NamedSimplePattern_ = {"name": symbol, "pattern": SimplePattern};
+ export type Binding = {"name": symbol, "pattern": SimplePattern};
export type Ref = {"module": ModulePath, "name": symbol};
@@ -698,7 +698,7 @@ definitions for the metaschema.
(struct NamedSimplePattern-anonymous (value) #:prefab)
(struct NamedSimplePattern-named (value) #:prefab)
- (struct NamedSimplePattern_ (name pattern) #:prefab)
+ (struct Binding (name pattern) #:prefab)
(struct Pattern-CompoundPattern (value) #:prefab)
(struct Pattern-SimplePattern (value) #:prefab)
diff --git a/schema/schema.bin b/schema/schema.bin
index 79d4165..a248064 100644
--- a/schema/schema.bin
+++ b/schema/schema.bin
@@ -1,8 +1,8 @@
´³schema·³version‘³definitions·³Ref´³rec´³lit³ref„´³tupleµ´³named³module´³refµ„³
-ModulePath„„´³named³name´³atom³Symbol„„„„„³Bundle´³rec´³lit³bundle„´³tupleµ´³named³modules´³refµ„³Modules„„„„„³Schema´³rec´³lit³schema„´³tupleµ´³dict·³version´³named³version´³refµ„³Version„„³definitions´³named³definitions´³refµ„³Definitions„„³embeddedType´³named³embeddedType´³refµ„³EmbeddedTypeName„„„„„„„³Modules´³dictof´³refµ„³
+ModulePath„„´³named³name´³atom³Symbol„„„„„³Bundle´³rec´³lit³bundle„´³tupleµ´³named³modules´³refµ„³Modules„„„„„³Schema´³rec´³lit³schema„´³tupleµ´³dict·³version´³named³version´³refµ„³Version„„³definitions´³named³definitions´³refµ„³Definitions„„³embeddedType´³named³embeddedType´³refµ„³EmbeddedTypeName„„„„„„„³Binding´³rec´³lit³named„´³tupleµ´³named³name´³atom³Symbol„„´³named³pattern´³refµ„³
SimplePattern„„„„„³Modules´³dictof´³refµ„³
ModulePath„´³refµ„³Schema„„³Pattern´³orµµ±
SimplePattern´³refµ„³
SimplePattern„„µ±CompoundPattern´³refµ„³CompoundPattern„„„„³Version´³lit‘„³AtomKind´³orµµ±Boolean´³lit³Boolean„„µ±Float´³lit³Float„„µ±Double´³lit³Double„„µ±
SignedInteger´³lit³
SignedInteger„„µ±String´³lit³String„„µ±
ByteString´³lit³
ByteString„„µ±Symbol´³lit³Symbol„„„„³
Definition´³orµµ±or´³rec´³lit³or„´³tupleµ´³tuplePrefixµ´³named³pattern0´³refµ„³NamedAlternative„„´³named³pattern1´³refµ„³NamedAlternative„„„´³named³patternN´³seqof´³refµ„³NamedAlternative„„„„„„„„µ±and´³rec´³lit³and„´³tupleµ´³tuplePrefixµ´³named³pattern0´³refµ„³NamedPattern„„´³named³pattern1´³refµ„³NamedPattern„„„´³named³patternN´³seqof´³refµ„³NamedPattern„„„„„„„„µ±Pattern´³refµ„³Pattern„„„„³
ModulePath´³seqof´³atom³Symbol„„³Definitions´³dictof´³atom³Symbol„´³refµ„³
-Definition„„³NamedPattern´³orµµ±named´³refµ„³NamedSimplePattern_„„µ± anonymous´³refµ„³Pattern„„„„³
SimplePattern´³orµµ±any´³lit³any„„µ±atom´³rec´³lit³atom„´³tupleµ´³named³atomKind´³refµ„³AtomKind„„„„„„µ±embedded´³rec´³lit³embedded„´³tupleµ´³named³ interface´³refµ„³
SimplePattern„„„„„„µ±lit´³rec´³lit³lit„´³tupleµ´³named³value³any„„„„„µ±seqof´³rec´³lit³seqof„´³tupleµ´³named³pattern´³refµ„³
SimplePattern„„„„„„µ±setof´³rec´³lit³setof„´³tupleµ´³named³pattern´³refµ„³
SimplePattern„„„„„„µ±dictof´³rec´³lit³dictof„´³tupleµ´³named³key´³refµ„³
SimplePattern„„´³named³value´³refµ„³
SimplePattern„„„„„„µ±Ref´³refµ„³Ref„„„„³CompoundPattern´³orµµ±rec´³rec´³lit³rec„´³tupleµ´³named³label´³refµ„³NamedPattern„„´³named³fields´³refµ„³NamedPattern„„„„„„µ±tuple´³rec´³lit³tuple„´³tupleµ´³named³patterns´³seqof´³refµ„³NamedPattern„„„„„„„µ±tuplePrefix´³rec´³lit³tuplePrefix„´³tupleµ´³named³fixed´³seqof´³refµ„³NamedPattern„„„´³named³variable´³refµ„³NamedSimplePattern„„„„„„µ±dict´³rec´³lit³dict„´³tupleµ´³named³entries´³refµ„³DictionaryEntries„„„„„„„„³EmbeddedTypeName´³orµµ±Ref´³refµ„³Ref„„µ±false´³lit€„„„„³NamedAlternative´³tupleµ´³named³variantLabel´³atom³String„„´³named³pattern´³refµ„³Pattern„„„„³DictionaryEntries´³dictof³any´³refµ„³NamedSimplePattern„„³NamedSimplePattern´³orµµ±named´³refµ„³NamedSimplePattern_„„µ± anonymous´³refµ„³
SimplePattern„„„„³NamedSimplePattern_´³rec´³lit³named„´³tupleµ´³named³name´³atom³Symbol„„´³named³pattern´³refµ„³
SimplePattern„„„„„„³embeddedType€„„
\ No newline at end of file
+Definition„„³NamedPattern´³orµµ±named´³refµ„³Binding„„µ± anonymous´³refµ„³Pattern„„„„³
SimplePattern´³orµµ±any´³lit³any„„µ±atom´³rec´³lit³atom„´³tupleµ´³named³atomKind´³refµ„³AtomKind„„„„„„µ±embedded´³rec´³lit³embedded„´³tupleµ´³named³ interface´³refµ„³
SimplePattern„„„„„„µ±lit´³rec´³lit³lit„´³tupleµ´³named³value³any„„„„„µ±seqof´³rec´³lit³seqof„´³tupleµ´³named³pattern´³refµ„³
SimplePattern„„„„„„µ±setof´³rec´³lit³setof„´³tupleµ´³named³pattern´³refµ„³
SimplePattern„„„„„„µ±dictof´³rec´³lit³dictof„´³tupleµ´³named³key´³refµ„³
SimplePattern„„´³named³value´³refµ„³
SimplePattern„„„„„„µ±Ref´³refµ„³Ref„„„„³CompoundPattern´³orµµ±rec´³rec´³lit³rec„´³tupleµ´³named³label´³refµ„³NamedPattern„„´³named³fields´³refµ„³NamedPattern„„„„„„µ±tuple´³rec´³lit³tuple„´³tupleµ´³named³patterns´³seqof´³refµ„³NamedPattern„„„„„„„µ±tuplePrefix´³rec´³lit³tuplePrefix„´³tupleµ´³named³fixed´³seqof´³refµ„³NamedPattern„„„´³named³variable´³refµ„³NamedSimplePattern„„„„„„µ±dict´³rec´³lit³dict„´³tupleµ´³named³entries´³refµ„³DictionaryEntries„„„„„„„„³EmbeddedTypeName´³orµµ±Ref´³refµ„³Ref„„µ±false´³lit€„„„„³NamedAlternative´³tupleµ´³named³variantLabel´³atom³String„„´³named³pattern´³refµ„³Pattern„„„„³DictionaryEntries´³dictof³any´³refµ„³NamedSimplePattern„„³NamedSimplePattern´³orµµ±named´³refµ„³Binding„„µ± anonymous´³refµ„³
SimplePattern„„„„„³embeddedType€„„
\ No newline at end of file
diff --git a/schema/schema.prs b/schema/schema.prs
index 2cf2df8..5db39dc 100644
--- a/schema/schema.prs
+++ b/schema/schema.prs
@@ -83,10 +83,10 @@ AtomKind = =Boolean / =Float / =Double / =SignedInteger / =String / =ByteString
NamedAlternative = [@variantLabel string @pattern Pattern].
-NamedSimplePattern = @named NamedSimplePattern_ / @anonymous SimplePattern .
-NamedPattern = @named NamedSimplePattern_ / @anonymous Pattern .
+NamedSimplePattern = @named Binding / @anonymous SimplePattern .
+NamedPattern = @named Binding / @anonymous Pattern .
-NamedSimplePattern_ = .
+Binding = .
Ref = ][.
ModulePath = [symbol ...].
]