Lazy lambda creation

This commit is contained in:
2024-08-23 21:54:48 +03:00
parent 084399c6b4
commit e7010aaeb0
10 changed files with 83 additions and 71 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
import { describe, expect, it } from '@jest/globals';
import { $, Term, _, _l, g, n, undef, _r as ref } from '../src/core';
import { $, Term, _, _l, g, n, undef } from '../src/core';
import { toNOrd as $o, NOrd } from '../src/ord';
import { toBoolean as $b, iif } from '../src/bool';
import { toNumber as $n, Succ, Zero, fromNumber as _n, fromNumber as _nn, cmp as cmpn, eq as eqn, even, gt as ngt, odd, succ, sum } from '../src/num';
@@ -160,7 +160,7 @@ describe('List', () => {
});
it('handles infinite lists', () => {
const dinfinite: Term = g('dinfinite', cons._(infinite)._(ref('list.spec', 'dinfinite')));
const dinfinite: Term = g('dinfinite', _(() => cons._(infinite)._(dinfinite)));
expect($n(concat._(dinfinite)._(undef)._(_l(x => _l(_ => x))))).toBe(0);
});
});
+2 -2
View File
@@ -1,5 +1,5 @@
import { describe, expect, it } from '@jest/globals';
import { Term, _, g, n, _r, undef } from '../src/core';
import { Term, _, g, n, undef } from '../src/core';
import { toNOrd as $o, NOrd } from '../src/ord';
import { toBoolean as $b, fromBoolean as _b } from '../src/bool';
import { toNumber as $n, Succ, Zero, fromNumber as _n, cmp, div, eq, ge, gt, ifz, le, lt, mod, mul, pred, sub, succ, sum } from '../src/num';
@@ -9,7 +9,7 @@ import { show } from '../src/num.show';
n('num.spec');
describe('Num', () => {
const infinity: Term = g('infinity', _(() => Succ._(_r('num.spec', 'infinity'))));
const infinity: Term = g('infinity', _(() => Succ._(infinity)));
describe('toNumber', () => {
it('converts 0', () => {
+2 -2
View File
@@ -1,5 +1,5 @@
import { describe, expect, it } from '@jest/globals';
import { Term, _, _l, g, n, undef, _r as ref } from '../src/core';
import { Term, _, _l, g, n, undef } from '../src/core';
import { NOrd, toNOrd } from '../src/ord';
import { toBoolean as $b } from '../src/bool';
import { toNumber as $n, Zero, gt as ngt } from '../src/num';
@@ -10,7 +10,7 @@ import { show } from '../src/string.show';
n('string.spec');
describe('String', () => {
const infinite: Term = g('infinite', Cons._(_c('a'))._(ref('string.spec', 'infinite')));
const infinite: Term = g('infinite', _(() => Cons._(_c('a'))._(infinite)));
describe('toString', () => {
it('converts ""', () => {