Add stylistic

This commit is contained in:
Freywar Ulvnaudgari
2024-08-05 17:51:08 +03:00
parent 27d1d6794d
commit eda3efaece
10 changed files with 130 additions and 65 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ export const iif: L<<T extends P>(b: Bool) => L<(t: T) => L<(f: T) => T>>>
= _(b => _(t => _(f => b._(t)._(f))));
export const eq: L<(l: Bool) => L<(r: Bool) => Bool>>
= _(l => _(r => l._(r)._(not._(r))))
= _(l => _(r => l._(r)._(not._(r))));
export const not: L<(b: Bool) => Bool>
= _(b => b._(False)._(True));
-1
View File
@@ -1,4 +1,3 @@
import { L, _ } from './core';
import { Bool } from './bool';
import { toNumber as $n, Num, Zero, fromNumber as _n, eq as eqn } from './num';
+10 -18
View File
@@ -23,54 +23,46 @@ export const tail: L<<T extends P>(xs: List<T>) => List<T>>
= _(xs => xs._(undef)._(_(_x => _(xs => xs))));
export const foldl: L<<T extends P, R extends P>(f: L<(a: R) => L<(x: T) => R>>) => L<(z: R) => L<(xs: List<T>) => R>>>
=
_(<T extends P, R extends P>(f: L<(a: R) => L<(x: T) => R>>) =>
= _(<T extends P, R extends P>(f: L<(a: R) => L<(x: T) => R>>) =>
_((z: R) =>
_((xs: List<T>) => xs._(z)._(_(x =>
_(xs => foldl._(f)._(f._(z)._(x))._(xs)))))));
export const foldlz: L<<T extends P>(f: L<(a: T) => L<(x: T) => T>>) => L<(xs: List<T>) => T>>
=
_(<T extends P>(f: L<(a: T) => L<(x: T) => T>>) =>
_((xs:List<T>) =>
= _(<T extends P>(f: L<(a: T) => L<(x: T) => T>>) =>
_((xs: List<T>) =>
xs._(undef)._(_(x =>
_(xs => foldl._(f)._(x)._(xs))))));
export const foldr: L<<T extends P, R extends P>(f: L<(x: T) => L<(a: R) => R>>) => L<(z: R) => L<(xs: List<T>) => R>>>
=
_(<T extends P, R extends P>(f: L<(x: T) => L<(a: R) => R>>) =>
= _(<T extends P, R extends P>(f: L<(x: T) => L<(a: R) => R>>) =>
_((z: R) =>
_((xs: List<T>) => xs._(z)._(_(x => _(xs => f._(x)._(foldr._(f)._(z)._(xs))))))));
export const foldrz: L<<T extends P>(f: L<(x: T) => L<(a: T) => T>>) => L<(xs: List<T>) => T>>
= _(_f => _(_z => undef));
export const eq: L<<T extends P>(e: L<(l: T) =>L <(r: T) => Bool>>) => L<(l: List<T>)=> L<(r: List<T>) => Bool>>>
=
_(<T extends P>(e: L<(l: T) => L<(r: T) => Bool>>) =>
export const eq: L<<T extends P>(e: L<(l: T) => L <(r: T) => Bool>>) => L<(l: List<T>) => L<(r: List<T>) => Bool>>>
= _(<T extends P>(e: L<(l: T) => L<(r: T) => Bool>>) =>
_((l: List<T>) =>
_((r: List<T>) => l
._(r._(True)._(_(_x => _(_xs => False))))
._(_(lx => _(lxs => r._(False)._(_(rx => _(rxs => and._(e._(lx)._(rx))._(eq._(e)._(lxs)._(rxs)))))))))));
export const map: L<<T extends P, R extends P>(f: L<(x: T) => R>) => L<(xs: List<T>) => List<R>>>
=
_(<T extends P, R extends P>(f: L<(x: T) => R>) =>
= _(<T extends P, R extends P>(f: L<(x: T) => R>) =>
_((xs: List<T>) => xs._(Nil)._(_(x => _(xs => Cons._(f._(x))._(map._(f)._(xs)))))));
export const filter: L<<T extends P>(f: L<(x: T) => Bool>) => L<(xs: List<T>) => List<T>>>
=
_(<T extends P>(f: L<(x: T) => Bool>) =>
= _(<T extends P>(f: L<(x: T) => Bool>) =>
_((xs: List<T>) => xs._(Nil)._(_(x => _(xs => iif._(f._(x))._(Cons._(x)._(filter._(f)._(xs)))._(filter._(f)._(xs)))))));
export const any: L<<T extends P>(f: L<(x: T) => Bool>) => L<(xs: List<T>) => Bool>>
=
_(<T extends P>(f: L<(x: T) => Bool>) =>
= _(<T extends P>(f: L<(x: T) => Bool>) =>
_((xs: List<T>) => xs._(False)._(_(x => _(xs => or._(f._(x))._(any._(f)._(xs)))))));
export const all: L<<T extends P>(f: L<(x: T) => Bool>) => L<(xs: List<T>) => Bool>>
=
_(<T extends P>(f: L<(x: T) => Bool>) =>
= _(<T extends P>(f: L<(x: T) => Bool>) =>
_((xs: List<T>) => xs._(True)._(_(x => _(xs => and._(f._(x))._(all._(f)._(xs)))))));
export const fromArray: <T extends P>(xs: T[]) => List<T>
+5 -9
View File
@@ -3,8 +3,7 @@ import { L, P, _ } from './core';
export type Pair<F extends P, S extends P> = L<<R extends P>(f: L<(f: F) => L<(s: S) => R>>) => R>;
export const Pair: L<<F extends P, S extends P>(f: F) => L<(s: S) => Pair<F, S>>>
=
_(<F extends P, S extends P>(f: F) =>
= _(<F extends P, S extends P>(f: F) =>
_((s: S) =>
_(<R extends P>(p: L<(f: F) => L<(s: S) => R>>) => p._(f)._(s))));
@@ -15,17 +14,14 @@ export const snd: L<<F extends P, S extends P>(p: Pair<F, S>) => S>
= _(p => p._(_(_f => _(s => s))));
export const first: L<<F extends P, FR extends P, S extends P>(t: L<(f: F) => FR>) => L<(p: Pair<F, S>) => Pair<FR, S>>>
=
_(<F extends P, FR extends P>(t: L<(f: F) => FR>) =>
= _(<F extends P, FR extends P>(t: L<(f: F) => FR>) =>
_(<S extends P>(p: Pair<F, S>) => p._(_(f => _(s => Pair._(t._(f))._(s))))));
export const second: L<<F extends P, S extends P, SR extends P>(t: L<(s: S) => SR>) => L<(p: Pair<F, S>) => Pair<F, SR>>>
=
_(<S extends P, SR extends P>(t: L<(s: S) => SR>) =>
= _(<S extends P, SR extends P>(t: L<(s: S) => SR>) =>
_(<F extends P>(p: Pair<F, S>) => p._(_(f => _(s => Pair._(f)._(t._(s)))))));
export const both: L<<F extends P, FR extends P, S extends P, SR extends P>(tf: L<(f: F) => FR>) => L<(ts: L<(s: S) => SR>) =>L<(p: Pair<F, S>) => Pair<FR, SR>>>>
=
_(<F extends P, FR extends P>(tf: L<(f: F) => FR>) =>
export const both: L<<F extends P, FR extends P, S extends P, SR extends P>(tf: L<(f: F) => FR>) => L<(ts: L<(s: S) => SR>) => L<(p: Pair<F, S>) => Pair<FR, SR>>>>
= _(<F extends P, FR extends P>(tf: L<(f: F) => FR>) =>
_(<S extends P, SR extends P>(ts: L<(s: S) => SR>) =>
_((p: Pair<F, S>) => p._(_(f => _(s => Pair._(tf._(f))._(ts._(s))))))));