git @ Cat's Eye Technologies Decoy / master lib / js / stdenv.mjs
master

Tree @master (Download .tar.gz)

stdenv.mjs @masterraw · history · blame

// StdEnv.  A grab-bag of things that appear in R5RS.

// SPDX-FileCopyrightText: Chris Pressey, the original author of this work, has dedicated it to the public domain.
// For more information, please refer to <https://unlicense.org/>
// SPDX-License-Identifier: Unlicense


//---------//
// Boolean //
//---------//

// #_# define and
export function and(...args) {
    let v = true;
    args.forEach(function(arg) { v = v && truthy(arg); });
    return v;
}
// #_# end define

// #_# define or
export function or(...args) {
    let v = false;
    args.forEach(function(arg) { v = v || truthy(arg); });
    return v;
}
// #_# end define

// #_# define not
export function not(a) {
    if (a === undefined) throw "need an argument"
    return !truthy(a);
}
// #_# end define


//------------//
// Comparison //
//------------//

// #_# define >
export function _3e(a, b) {
    return a > b;
}
// #_# end define

// #_# define >=
export function _3e_3d(a, b) {
    return a >= b;
}
// #_# end define

// #_# define <
export function _3c(a, b) {
    return a < b;
}
// #_# end define

// #_# define <=
export function _3c_3d(a, b) {
    return a <= b;
}
// #_# end define


//------------//
// Arithmetic //
//------------//

// #_# define -
export function _2d(a, b) {
    return a - b;
}
// #_# end define

// #_# define +
export function _2b(a, b) {
    return a + b;
}
// #_# end define

// #_# define *
export function _2a(a, b) {
    return a * b;
}
// #_# end define

// #_# define /
export function _2f(a, b) {
    return a / b;
}
// #_# end define

// #_# define abs
export function abs(a) {
    return Math.abs(a);
}
// #_# end define

// #_# define sin
export function sin(a) {
    return Math.sin(a);
}
// #_# end define

// #_# define cos
export function cos(a) {
    return Math.cos(a);
}
// #_# end define

// #_# define floor
export function floor(a) {
    return Math.floor(a);
}
// #_# end define

// #_# define ceiling
export function ceiling(a) {
    return Math.ceil(a);
}
// #_# end define


// Misc

// #_# define equal?
export function equal_3f(a, b) {
    // ooh no
    return a === b;
}
// #_# end define

// #_# define string-ref
export function string_ref(s, n) {
    return s.charAt(n);
}
// #_# end define

// #_# define error
export function error(s) {
    console.log(s);
}
// #_# end define