All pastes #36343 Raw Edit

Miscellany

public text v1 · immutable
#36343 ·published 2006-01-10 12:51 UTC
rendered paste body
declare
class Constante
   attr val
   meth init(C) val:=C end
   meth derive(V E) E={New Constante init(0)} end
   meth evalue(X) X=@val end
end
class Variable
   attr var
   meth init(X) var:=X end
   meth set(X) var:=X end
   meth derive(V E) if V==self then E={New Constante init(1)} else E={New Constante init(0)} end end
   meth evalue(X) X=@var end
end

class Somme
   attr expr1 expr2
   meth init(E1 E2)
      expr1:=@E1
      expr2:=@E2
   end
   meth derive(V E) E1 E2 in
      {@expr1 derive(V E1)}
      {@expr2 derive(V E2)}
      E={New Somme init(E1 E2)}
   end

   meth evalue(?X)
      local X1 X2
      in
	 {@expr1 evalue(X1)}
	 {@expr2 evalue(X2)}
	 X=X1+X2
    end
   end
end