An experiment in parentheses-free lisp (in JavaScript)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
wes b53b355a05 add expressjs server 7 years ago
server add expressjs server 7 years ago
.gitignore Adds simple NodeJS .gitignore 10 years ago
LICENSE.md changing license to ΩF:∅ Working Group 10 years ago
README.md Adds installation and usage instructions to README 10 years ago
cexps.js tests 10 years ago
closures.js closures! 10 years ago
cps.js restructure for evaluator 10 years ago
desugar.js remove extra parameter 10 years ago
environments.js clean up and updates to the code 7 years ago
errors.js add 'deftype' keyword to tokenizer 10 years ago
example.jl move as many operator definitions to prelude.jl as possible, remove some ones I don't care about right now 10 years ago
fib.jl handle unary arithmetic operations correctly 11 years ago
free_vars.js fix bug where defops were not being included by the tokenizer properly, fixed precedence order mixup in prelude.jl 10 years ago
package.json add expressjs server 7 years ago
parse.js clean up and updates to the code 7 years ago
pprint.js give a better name to type declarations in the IR 10 years ago
prelude.jl fix bug where defops were not being included by the tokenizer properly, fixed precedence order mixup in prelude.jl 10 years ago
representation.js clean up and updates to the code 7 years ago
test.js tweaks for identifier generation 10 years ago
tokenize.js remove code leftover from debugging 10 years ago
tools.js debugging print function 10 years ago
typecheck.js return type alias bindings along with ast 10 years ago
vm.js clean up and updates to the code 7 years ago
yarn.lock add expressjs server 7 years ago

README.md

JLambda

JLambda is a functional language in the spirit of languages such as Scheme, SML, or Clean. It aims to have a very flexible syntax and a clean and easy to understand type system. Another goal is to generate very efficient JavaScript code and possibly native code as well. Currently the type system is still being conceived, and the various parts that conspire to generate actual code are being written and will likely change quite a bit. It is possible to parse code and generate a pretty printed version of it (see example.jl for what the syntax looks like at the moment).

JLambda also aims to support concurrency which will be built on a continuation-passing style intermediate language. I have not figured out how scheduling threads will work, or whether I will provide any programmer directed way of scheduling (i.e. yield).

Installation

git clone git@github.com:nisstyre56/JLambda.git
cd JLambda
npm install

Usage

Since the language is currently under heavy construction, the parser is the entry point for now:

cat example.jl | ./parse.js