[Haskell-cafe] powering of new types

slemi 0slemi0 at gmail.com
Tue Dec 22 13:09:54 EST 2009


oh well thats pretty straight-forward:)

the next thing i don't understand is how ghci turns 1 into (Scalar 1).
1 == (Scalar 1) returns True, which is logical in a way (NOT), but if i
change the type definition to
data Matrix a = Matr {unMatr :: [[a]]} | Lol a | Scalar a
then
1 == (Scalar 1) still returns True, but
1 == (Lol 1) returns False, no matter in what order I put them in the
definition... o.O


Felipe Lessa wrote:
> 
> On Tue, Dec 22, 2009 at 09:03:44AM -0800, slemi wrote:
>> this allows me to use the (^^) powering operator, which works fine with
>> non-zero exponents.
>> however to my surprise when i try (^^ 0) the answer is (Scalar 1), and
>> not
>> the identity matrix as expected.
>> does this mean that (a ^^ 0) is not defined as (a ^^ 1 * a ^^ (-1)) (or
>> better yet (a / a)) in the prelude?
>> if so, can i redefine it so that it gives the right answer?
>> i am also very interested in how ghci got the answer (Scalar 1), it seems
>> quite magical:)
> 
> (^^ 0) == const 1, see this link:
> 
> http://haskell.org/ghc/docs/latest/html/libraries/base-4.2.0.0/src/GHC-Real.html#%5E
> 
> --
> Felipe.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
> 
> 

-- 
View this message in context: http://old.nabble.com/powering-of-new-types-tp26891202p26891742.html
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.



More information about the Haskell-Cafe mailing list