You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
785 B
26 lines
785 B
import { $, Term, _, _l, g, n, _r as ref } from './core';
|
|
|
|
n('ord');
|
|
|
|
export const enum NOrd {
|
|
LT,
|
|
EQ,
|
|
GT,
|
|
};
|
|
|
|
export const LT = g('LT', _l(lt => _l(_ => _l(_ => lt))));
|
|
|
|
export const EQ = g('EQ', _l(_ => _l(eq => _l(_ => eq))));
|
|
|
|
export const GT = g('GT', _l(_ => _l(_ => _l(gt => gt))));
|
|
|
|
export const eq = g('eq', _l(l => _l(r => l
|
|
._(r._(ref('bool', 'True'))._(ref('bool', 'False'))._(ref('bool', 'False')))
|
|
._(r._(ref('bool', 'False'))._(ref('bool', 'True'))._(ref('bool', 'False')))
|
|
._(r._(ref('bool', 'False'))._(ref('bool', 'False'))._(ref('bool', 'True'))))));
|
|
|
|
export const fromNOrd: (o: NOrd) => Term
|
|
= o => o === NOrd.LT ? LT : o === NOrd.EQ ? EQ : GT;
|
|
|
|
export const toNOrd: (o: Term) => NOrd
|
|
= o => $(o._(_(NOrd.LT))._(_(NOrd.EQ))._(_(NOrd.GT)).reduce());
|
|
|