- fix map last value #21
- revert breaking change of read to return Array
- use proper read function in executable REPL
- fix map on empty list
- fix exception when calling error
- unbind functions before setting property with
set-obj!
- make gensyms names shorter (like in CLISP)
- fix double quasiquote + unquote unquote splice (and other quirks)
- fix setting property Descriptor on functions (to change name for preact components)
this
inside lambdas that are object created with new (same as in JS) #19string
andtype
returninstance
for objects created bynew
pprint
function #17
- fix formatter when there is newline at the newline of the code
- fix duplicated copyright notes and missing Facebook note in output from rollup and babel
- fix regenerator from babel in dist files
- fix
ignore
macro - fix
load
function in node - fix
Pair::append
andappend
functions with non pair - throw exception when more unquote then quasiquotes
- fix double unquote symbol
- throw error when unquote-splice on atom in the middle of the list
- don't create cycles in unquote-splicing
- fix cloning cycles
- fix
load
function outside of Node - return undefined from
load
function - fix formatting of lambda expressions
- fix
symbol->string
function when called with gensym symbols - improve
-->
and..
macros - quote
define-macro
arguments so they don't evaluated if inside expression
- new macro
..
- formatter rules for example
cond
macro tree->array
function__code__
inside Macrodefine-formatter-rule
macro for breaking S-Expressions in Formatter
- fix lips.Formatter pattern matching
- better toString and
string
functions (keep class names for internal objects in minified js file) - fix
__code__
on lambda expressions (that also includes(define (name . arg)
) - evaluate of symbols and promises returned from macros
- add
unset!
,add-special!
andremove-special!
functions - add
define-symbol-macro
meta macro that create parser macros (parser transformer symbol) - rewrite
help
as macro so it works with parser macros require
function for Node.js +load
work in Node usingfs.readFile
- stack trace in exception in lips binary
- parser accept strings as argument (no need to call tokenizer - but it also accept array of tokens)
- modules mechanism as macros
- pattern matching as macro
macro?
functioncond
macro
- fix white space in docs for macros
- fix two cases in parser:
`(,(list 1 2))
and`(+ ,,(list 'foo))
#12 - fix quaisquote macro (eval of single unquote in double quasiquote) #14
- add scope to exec in
load
function - fix formatting of multi line strings
- fix
object?
when called with nil and number - fix
macroexpand
macro
- new macro
begin*
that run their arguments in parallel if they async - add typecheck to rest of the functions
- new
real?
andpluck
functions - stack trace for exceptions
- fix
find
andfilter
to check if function from argument return nil - fix accessing FileReader object (try to copy read only prototype)
- fix parser error when parsing symbol macros #10
- fix undefined values in macro with missing arguments #11
- fix macroexpand #9
- fix line breaking in S-Expression Formatter
- remove
nop
(you can use(begin undefined)
)
- fix unquote-splicing on nil (e.g. processing of
`(list ,@nil)
) - cdr and car should return nil on empty list
- typecheck and process nil in c[ad]+r functions
- fix parsing special forms as literal symbols #7
- fix unquote-splicing of empty list (e.g. processing of
`(list ,@(list))
)
- Add support to list cycles
- new macro
ignore
that will swallow promises - add
try
macro - add
current-environment
function eval
LIPS function now accept environment as second argument- better toString of gensym symbols (it now shows
#gensym_1#
instead ofSymbol(#gensym)
checkmacroexpand
) - macroexpand now produce formatted LIPS code (API exposed in Formatter::break that break LIPS code into lines)
- call error in evaluate when promise returned from function is rejected
- fix errors in
map
,reduce
,fold
andfor-each
(that usemap
) - fix exception when call to match fail to match
- fix accessing props on native objects like Object function #6
- fix print that get stdout from global env not from user one + better babel fix added in 0.10.1
- fix version number in source code
- fix for babel when using for-each (weakBind was not working because babel was using
apply(void 0, ...
) - add missing
error
function used in example macros
- change order of
split
,replace
,match
,search
andinstanceof
so you can use them withcurry
append
andappend!
no require list or nil second argument- apply is no longer Macro it's now a function (so it can be used in curry)
- change
append!
from macro to function (it will work with any value as fist list argument not only with names help
function and help system inside functions. First expression after function arguments is docs.- add
pipe
,compose
,fold
andsome
functions - new function
unbind
to help write function that work with functions as objects (LIPS wrap them) - add alias for
.
asget
so you can pass it to curry, with.
LIPS will try to create pair - lambda function introspection
- hyperapp example
- better loading of code
- make
map
,filter
,find
,for-each
andreduce
sync when possible - basic type checking
- documented
unquote-splicing
andunquote
functions that throw error when used outside ofquasiquote
- allow to extend the parser (kind of reader macros)
- fix
if
it should not return false if false value is undefined - fix even and odd functions with BigInt
- fix curry
- fix when inside quasiquote there is empty list
- make
load
uselips.exec
, so it execute code sequentially - fix
append
- fix
timer
to use with expression - fix macros without arguments
- fix calling
setTimeout
#5
for-each
andmap
works as in Scheme spec (use multiple arguments and don't use index)
- better binary (options -f -c + read stdin + REPL + indent + catch exception)
- indent API function
- allow to use dots and variable names
.
function now work with multiple arguments and gets nested object value- add
undefined
to default Environment so you can use it in Lips code - add function
nop
- tokenizer with meta data now include newlines and comments (nothing is removed)
- fix offset in tokenizer
- fix assign variables from variables (e.g. function or variable aliases)
- fix return value of Math operation that should return float #1
- fix tokenizer meta data with strings outside of S-Expressions or in lonely lines
- fix print of lips Symbols (update string function)
- fix missing recursive calls to unquote in quasiquote macro
- fix major issues with quasiquote that make macros don't work quite right
- fix parser when using multiple specials (unquote, quote etc.) in a row
- fix scope when evaluating macros
- fix async issues with list values inside let, lambda and begin macros
- don't evaluate next expressions in
and
andor
macros
- use exception.code for code that triggered exception
- new nth and reverse functions
- new type checking functions null? regex? pair? string? number? symbol? array? object? boolean?
- add lips source code that throwed exception in JavaScript error message
- fix lambda with rest parameter
if
now check if argument is boolean
- fix curry function
(let iter
macro that's transformation of(let* ((iter (lambda () ...
- expandable
(let iter
and(define (foo)
by macroexpand
- fix macroexpand evaluation of code
- use nil in cons when cdr is empty list
- fix reduce infinite loop
- fix invoking lambdas in dynamic scope
- fix print of Array with multi line strings and BigInts
- change api for evaluate to have object
{env, dynamic_scope, error}
- rename set to set!, set-cdr to set-cdr! and set-car to set-car!
- rename defmacro to define-macro like in scheme
- change order of arguments in env.inherit
- add bit operation functions
- add float, round and ceil functions
- add env variable to lips namespace which is alias to global_environment
- add find and for-each higher order functions
- add length function
- add new function which create instance of objects
- allow to set value using set! and dot expression that is used to get the value
- better invalid mime on script tag detection
- use ES6 symbols as names for lips symbols in gensym function
- show error when invoking trampoline in dynamic scope
- fix eq? and >= functions
- fix set! (change existing reference or create new if not existing in scope chain)
- fix return value of if macro
- fix defmacro
- fix parsing expressions that have multiple special characters in a row
- handle float calculations
- throw exception when try to execute native non function value
- fix resolving Promises when evaluating code
- don't allow regex that start with space (so it work when you have two divisions in one S-Expression)
- fix parsing float numbers that start with dot
- prevent evaluation of quoted expressions in macros
- fix macro sharing body between invocations
- fix read function
- fix parsing boolean values
- fix map, reduce and filter to handle async functions
- fix access variables that have value of undefined
- use src file for node and dist build file for unpkg
- fix version number in exported field
- use dist/lips.min.js as main for unpkg
- npm housekeeping
- fix lambda with symbol as parameters
- fix for TCO factorial using Y combinator & trampoline
- exec now return promise with array of results
- all numbers are wrapped with LNumber
- add support for new u and s regex flags
- optional dynamic scope
- add
not
,abs
,sqrt
and**
functions - wrap numbers in LNumber that use BigInt or bn.js if possible
- fix lambda with no parameters
- fix define with Promise like
(define x (let ...
- fix - with single argument
- fix for Node
- lambda with reset parameter (like in scheme)
- new functions: 1+, 1-, curry and range
- execute LIPS code from script tag with text-x/lips type attribute
- add string functions: join, split, replace, match, search
- new second parameter to
tokenize
that make it return array of extra objects{token, col, line, offset}
- Pair.flatten and lips function flatten
- fix (reduce + list)
- fix handling of empty list
- make let* handle promises
- fix evaluate of macro that return a Promise
- fix evaluating code with promises
- exec api method
- fix processing of multiple backquote and unquote
- fix build system
- Add reduce and set functions
- add while, ++ and -- macros
- ignore comments everything after ; but not inside strings and regexes
- gensym and load functions
- better string function
- Pair methods for working with ALists + Pair::reduce
- throw exception on car/cdr with non list
- fix parsing empty strings
- fix various errors catch by lint
- fix parsing ALists with list as keys and values
- fix parsing quasiquote that evaluate to single pair out if unquote
- Initial version