Definition: switch
Switch(t) b ==  b t
Definition: switch_case
Case v => case cont ==  λx.if (x =z v) then case else cont x fi 
Definition: switch_default
Default => body EndSwitch ==  λx.body
Definition: switch_done
EndSwitch ==  λx.!undefined
Definition: case
Case(value) body ==  body value value
Definition: case_default
Default => body ==  λvalue,value. body
Definition: case_pair
<x,y> => body[x; y] ==  λvalue,cont. let x,y = value in body[x; y]
Definition: case_inl
inl(x) => body[x] cont ==  λvalue,contvalue. case value of inl(x) => body[x] | inr(_) => cont contvalue contvalue
Definition: case_inr
inr(x) => body[x] cont ==  λvalue,contvalue. case value of inl(_) => cont contvalue contvalue | inr(x) => body[x]
Definition: case_cons
x::y =>
    body[x; y]
cont ==
  λvalue,contvalue. rec-case(value) of [] => cont contvalue contvalue | hd::tl => f.body[hd; tl]
Definition: case_nil
[] => body cont ==  λvalue,contvalue. rec-case(value) of [] => body | hd::tl => f.cont contvalue contvalue
Definition: case_it
⋅ => body ==  λvalue,contvalue. body
Definition: case_bind
x:body ==  body
Home
Index