Gabriel Dos Reis <g...@cs.tamu.edu> writes:

| The algebra is full of examples where things work by a sheer amount of
| luck. Consider the function rightPower in functor MonadWithUnit:
| 
|       rightPower(a: %,n: NonNegativeInteger) ==
|         zero? n => 1
|         res := 1
|         for i in 1..n repeat res := res * a
|         res
| 
| What should be the type of constant 1 selected at the assignment
| 
|         res := 1
| 
| and why?


Another example:  Consider the function leftLcm from
NonCommutativeOperatorDivision(P,F)  where
      P: MonogenicLinearOperator(F)
      F: Field

the function definition is:

        leftLcm(a,b) ==
            a = 0 =>b
            b = 0 =>a
            b0 := b
            u  := monomial(1,0)$P
            v  := 0
            while leadingCoefficient b ~= 0 repeat
                qr     := leftDivide(a,b)
                (a, b) := (b, qr.remainder)
                (u, v) := (u*qr.quotient+v, u)
            b0*u


The problem is the definition of the local variable v:

            v  := 0

There are four candidates in scope:

     0: P
     0: F
     0: NonNegativeInteger
     0: Integer

(the right answer is 0@P).

-- Gaby


------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Cisco Self-Assessment and learn 
about Cisco certifications, training, and career opportunities. 
http://p.sf.net/sfu/cisco-dev2dev
_______________________________________________
open-axiom-devel mailing list
open-axiom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel

Reply via email to