sibilisp
v0.14.2
Published
A LISP like language to JavaScript transpiler, based on Sibilant
Downloads
55
Maintainers
Readme
A multi-paradigm, functional programming oriented, Sibilant based language dialect that transpiles to JavaScript. 👽
(defun palindrome? (input)
;; predicate thats check if the given input string is a palindrome
(loop ((start-pos 0)
(end-pos (- (length input) 1)))
(cond ((not (eql? (getf input start-pos) (getf input end-pos)))
false)
((>= start-pos end-pos)
true)
:else (recur (+ start-pos 1) (- end-pos 1)))))
(palindrome? "kayak") ; => true
(palindrome? "baobab") ; => false
Features
Sibilisp ...
- brings the ES2015+ module system to Sibilant, as well as macros for ES2015+ promises, default function arguments, generator functions, yielding...
- enables tail recursive programming via it's
loop
andrecur
construct. - is tailored towards functional programming concepts, but remains being a multi-paradigm language.
- has build-in facilities for creating tagged type and sum type constructors.
- supports
.slisp
,.sibilant
and.js
files in the same project and can compile all of them into plain JavaScript files. - results in readable JavaScript that does not modify built-in prototypes. 🤗
- is fun to use. 😎
Documentation
As of now, documentation can be found in the GitHub wiki.
Wiki
Guides
API & Language
Examples
🚧 Under construction
Reasoning
Sibilant is a LISP-like language based on s-expressions, that is written in itself and transpiles to JavaScript. It ships a very nice macro system with it that almost* works like a real LISP macro system (awesome!). However, writing Sibilant code is almost the same as writing JavaScript code (that's by intention) whereas it could be operating on a much higher level of abstraction. This is when Sibilisp comes into play.
Sibilisp uses the underlying macro system of Sibilant to further develop a dialect that enhances it's base language, ranging from macros that implement various new JavaScript features - like the ES2015+ module system - to macros which provide pattern matching** or recursion.
As a free bonus, Sibilisp ships with a functional programming toolkit as separate ES2015+ module called prelude
that you can use in your programs. If you are a JavaScript programmer, think of it as a built-in Lodash or Underscore.
Notes:
* Everything is based on JavaScript, so certain limitations apply
** Again, to a limited degree