Scheme based powerful lisp interpreter in JavaScript
get-environment-variables
and get-environment-variable
returns nil and undefined in the browsertrue
, false
, and NaN
are no longer parser constants #292
eval
use interaction-environment
stead of current-environment
by defaultread
#327
null
falsy value #330
nil
parser constant #332
undefined
with #void
, and null
with #null
take
(type #void)
(JavaScript undefined
) is now void
vector-for-each
and vector-copy!
function from R7RSstring-for-each
, string-downcase
, and string-upcase
from R7RStypecheck-number
functionchar-foldcase
and string-foldcase
functionslist-set!
and nth-pair
functionsSRFI-61
, SRFI-139
, and SRFI-210
continuations?
functioniterator->array
functionchar<...>?
and string<...>?
functions #298
log
to accept two arguments #301
data-bootstrap
attribute on script tagsatan
work for complex numbers+inf.0
and -inf.0
parser constantszip
procedure (inspired by Lodash)with-input-from-string
and read-all
#327
#!fold-case
and #!no-fold-case
directives #342
drop
procedure-->
to get the functionregex
procedure (rename from %r
used in bootstrap.scm)let-values
to allow binding to list #281
string-fill!
string-set!
to mutate the string and work on any expressionsyntax-rules
in macro define-value
#290
let-values
syntax-rules
procedure?
to return true for continuationslips --help
screencond-expand
to skip not-matched symbolssyntax-rules
identifiers with let #291
cond
from -->
macro so you can use use -->
inside cond
flatten
syntax-rules
macro #304
(read)
in the Web REPLnpm install
#305
syntax-rules
repr
of delay expressions #315
try..catch
#317
^
and $
syntax extension #318
let*-values
#322
do
macro #324
string->number
that leads to NaN #326
iterator->array
#328
replace
with async lambda
#319
values
without arguments #331
(expt +i +i)
inexact->exact
procedure #340
repr
of cycles#f
or #t
#343
curry
)lips.exec
into an objectguard
macroparameterize
and make-parameter
shuffle
function(scheme-report-environment 7)
equal?
#270
equal?
on records #273
lips.set_fs
function #256
number->string
for binary numberslist->array
scheme-report-environment
#268
integer?
works for normal native numbers(1 . 2 3)
#245
syntax-rules
#243
try..catch
#163
with-input-from-string
function-->
macro #200
performance.timeOrigin
on Node 12 #207
get-script
with get-resource
that work in Node and in browser and allows to load CSSobject->alist
, command-line
, and symbol-append
proceduresget-environment-variable
and get-environment-variables
set-global!
macrocurrent-second
, current-jiffy
, and jiffies-per-second
procedures**
operator when JS support exponential operatorstring-join
and string-split
=>
syntax to cond
macro (as per R7RS)undefined
parser constantlog
of complex, rational, and negative numbersflush-output
functionsyntax-rules
repr
of object that have space in keystring->symbol
and symbol->string
parent.frame
inside Intepreter
eval
without envlips.LComplex.prototype.modulus
)repr
of native type prototypes (e.g. LComplex
)(object :foo Number.prototype)
)sqrt
of rational where numerator or denominator is floatsqrt
of negative real that are like integers #175
length
of nilEnv::set
repr
of symbols with impossible characters created with string->symbol
eqv?
on same pairsabs
on inexact numbers that can be represented as integers #181
zip
function that just (map list l1 l2 ...)
raise
now throws object as is (just like JS throw
keyword)error
now throws LipsError exception as per R7RSset-repr!
on records (record type name is now a class)#f
instead of nil
when fail to match (so it work in cond
or if
)complement
, always
, once
, flip
, unfold
(inspired by Ramda)exp
on complex numberserror-object?
, error-object-message
and error-object-irritants
NaN
, null
and undefined
parser constantsdefine-class
set-repr!
on classesbegin
) #153
set-obj!
case
macro (use implementation from R7RS Errata)define-class
define-class
env
and dir
now returns symbols instead of stringsrepr
and type
of quoted promises now return #<promise>
and promise
list-copy
define-record-type
escape-regex
functionapropos
accept symbol as argument**interaction-environment**
and **internal-env**
letrec*
that in LIPS is exactly the same as letrec
pragma->sxml
macro that define sxml
macro (default is h
)fs
in internal envfs
with BrowserFS if existspprint
in both REPLs now print in color #33
nan?
, infinite?
and finite?
functions+nan.0
and -nan.0
(R7RS)environment?
functioncurrent-directory
and set-...
from SRFI-170#:foo
)let
apropos
real-part
functioneqv?
on exact and inexact numbers according to R7RS specexact->inexact
on complex numbers#/( \\/)/g
)#/\/[^/]+$/
)(/ n)
== (/ 1 n)
)list-ref
according to R7RS erratalet*
#/foo/
quoted-promise
, syntax '>
#54
await
that return original promise from QuotedPromiseeof
variable to global envapropos
functionlist*
macroscheme-report-environment
function (R5RS)**
to work on negative numbersequal?
on typed arraysget-output-string
function)eval
builtin function to evaluate everything