So, the function type "(Num a)=>Integer->a" means that return value of this function can be cast to any particular instance of class Num.

Ok. I have a my own class "class A a" and want to write function like this  "f:: (A a)=>Integer->a". Can I do it?


2008/1/21, Jon Fairbairn <jon.fairbairn@cl.cam.ac.uk>:
"Alexander Seliverstov" <seliverstov.a@gmail.com> writes:

> How does caller choose which particular instance of Num they want?

They specify the type... or just pass the result to
something that specifies the type. Try it in ghci:

Prelude> let f:: Integral i => Integer -> i; f = fromIntegral
Prelude> let g :: Int -> Int; g = id
Prelude> :t g (f 5)
g (f 5) :: Int
Prelude> let h :: Integer -> Integer; h = id
Prelude> :t h (f 5)
h (f 5) :: Integer
Prelude>

> What the difference between haskell class and interface in object-oriented
> languge such Java or C#?

Really they are completely different animals that look a lot
alike because they serve similar purposes -- convergent
evolution!

--
J車n Fairbairn                                 Jon.Fairbairn@cl.cam.ac.uk


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe



--
妊 批志忘忪快扶我快技,
妊快抖我志快把扼找抉志 均抖快抗扼忘扶忱把