@@ -66,6 +66,45 @@ export const integer = {
6666 : 'false' ,
6767 ) ,
6868 ) ,
69+ greater_than : preludeFunction (
70+ [ 'integer' , 'greater_than' ] ,
71+ {
72+ parameter : types . integer ,
73+ return : makeFunctionType ( '' , {
74+ parameter : types . integer ,
75+ return : types . integer ,
76+ } ) ,
77+ } ,
78+ number2 =>
79+ either . makeRight (
80+ makeFunctionNode (
81+ {
82+ parameter : types . integer ,
83+ return : types . boolean ,
84+ } ,
85+ serializeOnceAppliedFunction ( [ 'integer' , 'greater_than' ] , number2 ) ,
86+ option . none ,
87+ number1 => {
88+ if (
89+ typeof number1 !== 'string' ||
90+ ! types . integer . isAssignableFrom ( makeUnionType ( '' , [ number1 ] ) ) ||
91+ typeof number2 !== 'string' ||
92+ ! types . integer . isAssignableFrom ( makeUnionType ( '' , [ number2 ] ) )
93+ ) {
94+ return either . makeLeft ( {
95+ kind : 'panic' ,
96+ message : 'numbers must be atoms' ,
97+ } )
98+ } else {
99+ return either . makeRight (
100+ // TODO: See comment in `natural_number.add`.
101+ String ( BigInt ( number1 ) > BigInt ( number2 ) ) ,
102+ )
103+ }
104+ } ,
105+ ) ,
106+ ) ,
107+ ) ,
69108 less_than : preludeFunction (
70109 [ 'integer' , 'less_than' ] ,
71110 {
0 commit comments