lisp.bend checks
raw source on the hub · import 0x9fc0cec754888f0fecabce899ddf2ee5/lisp.bend as Lisp
1 import
import Base
Types
type LExp source · line 17 · raw
Data
LNilLExp
LTrueLExp
LNum@val:U32 -> LExp
LSym@name:String -> LExp
LCell@head:LExp -> @tail:LExp -> LExp
LQuote@e:LExp -> LExp
LAtom@e:LExp -> LExp
LEq@a:LExp -> @b:LExp -> LExp
LCar@e:LExp -> LExp
LCdr@e:LExp -> LExp
LCons@a:LExp -> @b:LExp -> LExp
LCond@cls:LExp -> LExp
LApp@fn:LExp -> @args:LExp -> LExp
LLam@ps:LExp -> @body:LExp -> LExp
LRec@name:String -> @ps:LExp -> @body:LExp -> LExp
LClos@ps:LExp -> @body:LExp -> @env:Map<&2, LExp> -> LExp
LClosR@name:String -> @ps:LExp -> @body:LExp -> @env:Map<&2, LExp> -> LExp
type LK source · line 36 · raw
Data
KDoneLK
KAtom@k:LK -> LK
KEqA@b:LExp -> @env:Map<&2, LExp> -> @k:LK -> LK
KEqB@a:LExp -> @k:LK -> LK
KCar@k:LK -> LK
KCdr@k:LK -> LK
KConsA@b:LExp -> @env:Map<&2, LExp> -> @k:LK -> LK
KConsB@a:LExp -> @k:LK -> LK
KAppF@args:LExp -> @env:Map<&2, LExp> -> @k:LK -> LK
KCondC@then:LExp -> @rest:LExp -> @env:Map<&2, LExp> -> @k:LK -> LK
type LTask source · line 48 · raw
Data
TEval@e:LExp -> @env:Map<&2, LExp> -> @k:LK -> LTask
TRet@k:LK -> @v:LExp -> LTask
TArgs@es:LExp -> @env:Map<&2, LExp> -> LTask
TCond@cls:LExp -> @env:Map<&2, LExp> -> @k:LK -> LTask
Definitions
def l_cons source · line 54 · raw
@+a:LExp -> @+b:LExp -> LExp
def l_car source · line 57 · raw
@+e:LExp -> LExp
def l_cdr source · line 64 · raw
@+e:LExp -> LExp
def l_is_atom source · line 71 · raw
@+e:LExp -> Bool
def l_bool source · line 78 · raw
@b:Bool -> LExp
def l_eq source · line 86 · raw
@+a:LExp -> @+b:LExp -> Bool
McCarthy eq: atoms only, like the original.
def l_append source · line 116 · raw
@+a:LExp -> @+b:LExp -> LExp
PG's append. (non-lists pass through so l_append_nil holds generally.)
def l_bind source · line 126 · raw
@+ps:LExp -> @+vs:LExp -> @env:Map<&2, LExp> -> Map<&2, LExp>
PG's pair.: zip param names with arg values into the env.
def l_pick source · line 135 · raw
@r:Pair(Map<&2, LExp>, LExp) -> LExp
def l_run source · line 139 · raw
@+f:Nat -> @+t:LTask -> LExp
def l_eval source · line 240 · raw
@+f:Nat -> @+e:LExp -> LExp
def l_batch source · line 244 · raw
@+f:Nat -> @+es:List<&2, LExp> -> List<&2, LExp>
Whole programs are independent: fork-join over the list.
def l_batch_gpu source · line 252 · raw
@+f:Nat -> @+es:List<&2, LExp> -> List<&2, LExp>
def main source · line 255 · raw
List<&2, LExp>