Skip to main content

module demo::lang::Lisra::Runtime

rascal-0.43.1

Usage​

import demo::lang::Lisra::Runtime;

Dependencies​

import Prelude;

data Lval​

data Lval  
= Integer(int n)
| Atom(str name)
| List(list[Lval] elms)
| Closure(Result(list[Lval] args, Env env))
;

alias Scope​

map[Lval,Lval]

alias Env​

list[Scope]

function makeEnv​

Env makeEnv(list[Lval] vars, list[Lval] values, Env outer) =      ❸  
[(vars[i] : values[i] | i <- index(vars))] + outer;

function find​

int find(Lval sym, Env e){      ❹  
for(n <- index(e))
if(e[n][sym]?)
return n;
return -1;
}

alias Result​

tuple[Lval val, Env env]