diff --git a/acid/compiler/compiler.py b/acid/compiler/compiler.py index 8b93ba5..8ba8405 100644 --- a/acid/compiler/compiler.py +++ b/acid/compiler/compiler.py @@ -53,7 +53,7 @@ def execute_compiled_file(cls, path, prelude=default_env, mute_env=False): with open(path, 'rb') as compiled_file: code = marshal.load(compiled_file) - exec(code, env) + exec(code, znv, env) _run_main_function(env) @@ -120,7 +120,7 @@ def load(self, env): code = self.compile() - exec(code, env) + exec(code, env, env) def execute(self, prelude=default_env, mute_env=False): """ diff --git a/acid/prelude.py b/acid/prelude.py index c6a0196..2200a71 100644 --- a/acid/prelude.py +++ b/acid/prelude.py @@ -37,4 +37,11 @@ '#~': op.delitem, 'negate': op.neg, 'print': print, + 'list': lambda *elts: list(elts), + 'tuple': lambda *elts: tuple(elts), + 'append': lambda x, xs: [x] + xs, + 'foldl': lambda f, xs: reduce(f, xs), + 'map': lambda f, xs: list(map(f, xs)), + 'filter': lambda f, xs: list(filter(f, xs)), + 'range': lambda start, end: list(range(start, end)) } diff --git a/examples/fibonacci.acid b/examples/fibonacci.acid new file mode 100644 index 0000000..cf10bcd --- /dev/null +++ b/examples/fibonacci.acid @@ -0,0 +1,16 @@ +/* + * Suite de Fibonacci + */ + +// n-ième terme de la suite de Fibonacci +(define fib (lambda (n) + (if (< n 2) + n + (+ (fib (- n 1)) (fib (- n 2))) + ) +)) + +// Suite de Fibonacci jusqu'au n-ième terme +(define fibSeq (lambda (n) + (map fib (range 0 n)) +))