cdv-classes-and-programs(dv) ==
  case(dv)
  Base(a)=> [<base-deriv-type(a), base-deriv-class(a), base-deriv-program(a)>]
  pair(d1,d2) => cs1,cs2.cs1 @ cs2
  (d)'=> cs.map(
c.let T,X,prg = c in 
                   <T, (X)', delay-program(prg)>cs)
  f(d:P):T=> cps.[<T
                  , simple-comb(f; 
k.(fst(snd(cps[k]))))
                  , simple-comb-program(f;T;map(
cp.(snd(snd(cp)));cps))>]
  f(d:P, self'):T=> cps.[<T
                         , f(
k.(fst(snd(cps[k])));(self)')
                         , rec-comb-program(f;T;map(
cp.(snd(snd(cp)));cps))>]
Definitions : 
classderiv_ind: classderiv_ind, 
base-deriv-type: base-deriv-type(bdv), 
base-deriv-class: base-deriv-class(bdv), 
base-deriv-program: base-deriv-program(bdv), 
append: as @ bs, 
spreadn: spread3, 
es-prior-val: (X)', 
delay-program: delay-program(P), 
simple-comb: simple-comb(F; Xs), 
simple-comb-program: simple-comb-program(F;B;Ps), 
cons: [car / cdr], 
pair: <a, b>, 
rec-combined-class: f(X;(self)'), 
pi1: fst(t), 
select: l[i], 
rec-comb-program: rec-comb-program(F;B;Ps), 
map: map(f;as), 
lambda:
x.A[x], 
pi2: snd(t), 
nil: []
FDL editor aliases : 
cdv-classes-and-programs
cdv-classes-and-programs(dv)  ==
    case(dv)
    Base(a)=>  [<base-deriv-type(a),  base-deriv-class(a),  base-deriv-program(a)>]
    pair(d1,d2)  =>  cs1,cs2.cs1  @  cs2
    (d)'=>  cs.map(\mlambda{}c.let  T,X,prg  =  c  in 
                                      <T,  (X)',  delay-program(prg)>cs)
    f(d:P):T=>  cps.[<T
                                    ,  simple-comb(f;  \mlambda{}k.(fst(snd(cps[k]))))
                                    ,  simple-comb-program(f;T;map(\mlambda{}cp.(snd(snd(cp)));cps))>]
    f(d:P,  self'):T=>  cps.[<T
                                                  ,  f(\mlambda{}k.(fst(snd(cps[k])));(self)')
                                                  ,  rec-comb-program(f;T;map(\mlambda{}cp.(snd(snd(cp)));cps))>]
Date html generated:
2010_08_27-PM-08_14_29
Last ObjectModification:
2010_06_23-PM-03_47_01
Home
Index