An Arc-language interpreter written in JavaScript.
This is an Arc-language interpreter written in JavaScript. It can run both on nodejs and on a web-site.
Stack based vm ( visualizer ) | Self-hosting compiler |
First-class continuations | Tail call optimization |
mac macro | Almost of anarki’s functions. |
user tagged objects (annotate) | defgeneric (object system) |
complex-args (let, fn) | regexp (#/exp/) |
Special syntax (:~.!) | user defined special syntax (defss) |
User difined type function (deftf) | stack-tracer |
You have to install nodejs and npm first.
$ sudo npm install -g arc-js
Then, You can run REPL.
$ arcjs
arc> (pr 'hello-world)
hello-world
hello-world
arc> (+ 1 2)
3
arc> (def average (x y) (/ (+ x y) 2))
#<fn:average>
arc> (average 2 4)
3
In the HTML ‘<head>’
<script type="text/javascript" src="arc.min.js"></script>
Then, You can run arc-language in your javascript.
var arc_runner = ArcJS.context();
var res = arc_runner.evaluate("(+ 1 2 3 4)");
console.log(res); // 10
// FizzBuzz
var code = [
"(prn 'Start_FizzBuzz)",
"(for n 1 100",
" (prn (case (gcd n 15)",
" 1 n",
" 3 'Fizz",
" 5 'Buzz",
" 'FizzBuzz)))"].join("\n");
arc_runner.evaluate(code); // 1, 2, Fizz ...
In the HTML ‘<head>’
<script type="text/javascript" src="arc.min.js"></script>
<!-- jQuery is required in arc-loader.js -->
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="arc-loader.js"></script>
Then, You can load arc files as follows.
<script type="text/arc" src="fizzbuzz.arc"></script>
fizzbuzz.arc
(def fizzbuzz (limit)
(for x 1 limit
(prn
(aif (mappend [if (is 0 (mod x car._)) cdr._] '((3 Fizz) (5 Buzz)))
(string it)
x))))
Then you can do following
<script type="text/arc">
(fizzbuzz 3)
(fizzbuzz 100)
</script>
# ArcJS
Copyright (c) 2012 Shin Aoyama
-----------------
Perl Foundations's Artistic License 2.0
# Anarki
Copyright (c) Paul Graham
Copyright (c) Robert Morris
Copyright (c) A lot of contributors (see https://github.com/arclanguage/anarki/graphs/contributors)
-----------------
Perl Foundations's Artistic License 2.0
# Arc language
Copyright (c) Paul Graham
Copyright (c) Robert Morris
-----------------
Perl Foundations's Artistic License 2.0