Strict lambda parameters
This commit is contained in:
+9
-9
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from '@jest/globals';
|
||||
import { $, Term, _, g, l, n, undef } from '../src/core';
|
||||
import { $, Term, _, _l, g, n, undef, _r as ref } 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';
|
||||
@@ -16,7 +16,7 @@ describe('List', () => {
|
||||
|
||||
const _na: (xs: number[]) => Term = xs => !xs.length ? Nil : Cons._(_n(xs[0]))._(_(() => _na(xs.slice(1))));
|
||||
|
||||
const $na: (xs: Term) => number[] = xs => $(xs._(_([]))._(l('x', l('xs', _(({ x, xs }) => _([$n(x), ...$na(xs)]))))));
|
||||
const $na: (xs: Term) => number[] = xs => $(xs._(_([]))._(_l(x => _l(xs => _(({ x, xs }) => _([$n(x), ...$na(xs)]))))));
|
||||
|
||||
describe('toArray', () => {
|
||||
it('converts []', () => {
|
||||
@@ -60,7 +60,7 @@ describe('List', () => {
|
||||
});
|
||||
|
||||
it('handles infinite lists', () => {
|
||||
expect($n(cons._(_n(0))._(infinite)._(undef)._(l('x', l('_', 'x'))))).toBe(0);
|
||||
expect($n(cons._(_n(0))._(infinite)._(undef)._(_l(x => _l(_ => x))))).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -78,7 +78,7 @@ describe('List', () => {
|
||||
});
|
||||
|
||||
it('handles infinite lists', () => {
|
||||
expect($n(snoc._(infinite)._(_n(0))._(undef)._(l('x', l('_', 'x'))))).toBe(0);
|
||||
expect($n(snoc._(infinite)._(_n(0))._(undef)._(_l(x => _l(_ => x))))).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -142,7 +142,7 @@ describe('List', () => {
|
||||
});
|
||||
|
||||
it('handles infinite lists', () => {
|
||||
expect($n(append._(infinite)._(infinite)._(undef)._(l('x', l('_', 'x'))))).toBe(0);
|
||||
expect($n(append._(infinite)._(infinite)._(undef)._(_l(x => _l(_ => x))))).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -160,8 +160,8 @@ describe('List', () => {
|
||||
});
|
||||
|
||||
it('handles infinite lists', () => {
|
||||
const dinfinite: Term = g('dinfinite', cons._(infinite)._('dinfinite'));
|
||||
expect($n(concat._(dinfinite)._(undef)._(l('x', l('_', 'x'))))).toBe(0);
|
||||
const dinfinite: Term = g('dinfinite', cons._(infinite)._(ref('list.spec', 'dinfinite')));
|
||||
expect($n(concat._(dinfinite)._(undef)._(_l(x => _l(_ => x))))).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -263,7 +263,7 @@ describe('List', () => {
|
||||
it('handles infinite lists', () => {
|
||||
expect($n(
|
||||
foldr
|
||||
._(l('x', l('a', sum._('x')._(iif._(eqn._(_n(5))._('x'))._(Zero)._('a')))))
|
||||
._(_l(x => _l(a => sum._(x)._(iif._(eqn._(_n(5))._(x))._(Zero)._(a)))))
|
||||
._(Zero)
|
||||
._(infinite)))
|
||||
.toBe(15);
|
||||
@@ -286,7 +286,7 @@ describe('List', () => {
|
||||
it.failing('handles infinite lists', () => {
|
||||
expect($n(
|
||||
foldrz
|
||||
._(l('x', l('a', sum._('x')._(iif._(eqn._(_n(5))._('x'))._(Zero)._('a')))))
|
||||
._(_l(x => _l(a => sum._(x)._(iif._(eqn._(_n(5))._(x))._(Zero)._(a)))))
|
||||
._(infinite)))
|
||||
.toBe(15);
|
||||
});
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from '@jest/globals';
|
||||
import { Term, _, g, n, undef } from '../src/core';
|
||||
import { Term, _, g, n, _r, 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._('num.spec', 'infinity')));
|
||||
const infinity: Term = g('infinity', _(() => Succ._(_r('num.spec', 'infinity'))));
|
||||
|
||||
describe('toNumber', () => {
|
||||
it('converts 0', () => {
|
||||
|
||||
+4
-4
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from '@jest/globals';
|
||||
import { Term, _, g, l, n, undef } from '../src/core';
|
||||
import { Term, _, _l, g, n, undef, _r as ref } 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'))._('string.spec', 'infinite'));
|
||||
const infinite: Term = g('infinite', Cons._(_c('a'))._(ref('string.spec', 'infinite')));
|
||||
|
||||
describe('toString', () => {
|
||||
it('converts ""', () => {
|
||||
@@ -108,7 +108,7 @@ describe('String', () => {
|
||||
});
|
||||
|
||||
it('handles infinite strings', () => {
|
||||
expect($c(append._(infinite)._(infinite)._(undef)._(l('x', l('_', 'x'))))).toBe('a');
|
||||
expect($c(append._(infinite)._(infinite)._(undef)._(_l(x => _l(_ => x))))).toBe('a');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -122,7 +122,7 @@ describe('String', () => {
|
||||
});
|
||||
|
||||
it('handles infinite strings', () => {
|
||||
expect($c(wrap._(infinite)._(infinite)._(undef)._(l('x', l('_', 'x'))))).toBe('a');
|
||||
expect($c(wrap._(infinite)._(infinite)._(undef)._(_l(x => _l(_ => x))))).toBe('a');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user