// 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