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