1.3.0 • Published 10 years ago

solo-lisp v1.3.0

Weekly downloads
11
License
MIT
Repository
github
Last release
10 years ago

Solo Lang

Minimal lisp syntax to plain and readable JavaScript compiler

Solo is not a separate language but really a way of writing JavaScript in a lispy syntax. See for yourself...

Getting started

$ npm install -g solo
$ echo "(def square (function (x) (* x x))) (console.log (square 5))" > test.sl
$ solo test.sl

'use strict';
let square = function (x) {
      return x * x;
};
console.log(square(5));

$ solo test.sl | node --harmony

25

Documentation

ExampleSoloJavaScript
Operators(+ 1 2)1 + 2;
(/ 4 2)4 / 2;
(/ (* 2 6) 3)(2 * 6) / 3;
(% (+ (- 5 1) 4) 2)(5 - 1 + 4) % 2;
(=== 5 "5")5 === "5";
(instanceof "asd" Date)"asd" instanceof Date;
(typeof "rick")typeof "rick";
(void 0)void 0;
Conditionals(if (> 2 1) "yes" "no")2 > 1 ? "yes" : "no";
Assignment(def x 2)let x = 2;
(set! module.exports square)module.exports = square;
Objects(new Date)new Date();
(new Array 5)new Array(5);
(get 0 arr)arr[0];
(get "x" o)o["x"];
(get ch ba)ba.ch;
Types"str\nrts""str\nrts";
44;
4.54.5;
truetrue;
falsefalse;
nullnull;
[1 2 3][1, 2, 3];
{a 1 b 2 c 3}{a: 1, b: 2, c: 3};
(fn prop1 prop2)fn(prop1, prop2);
; comment
Other(try)try {} finally {};
(try (catch (xx)))try {} catch (xx) {}
(try (throw "oops") (+ 1 2) (catch (e) (console.log e)))try {throw 'oops'; 1 + 2;} catch (e) {console.log(e);}
(do)(function() {}());
(do (set! a 1) (set! b "2"))(function () {a = 1; b = "2";}())

Supported Primitives

if function new try catch finally do
instanceof typeof void throw
def set!
+ - * / %
< <= > >= || && == === != !==
null? true? false?
undefined? boolean? number? string? object? array? function?

Contribute

License

MIT (see LICENSE file)

1.3.0

10 years ago

1.2.0

10 years ago

1.1.3

10 years ago

1.1.2

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.0

10 years ago