import Prelude hiding ((^))
See here: https://wiki.haskell.org/Import
Best regards,
Paul
От: trent shipley
Отправлено: 3 марта 2018 г. в 8:25
Кому: beginners@haskell.org
Тема: [Haskell-beginners] Overload ^
{-
I want to override Prelude.^ (as an academic exercise).
Can it be done? How?
Trent
-}
(^) :: Int -> Int -> Int
m ^ 0 = 1
m ^ n = m * (m ^ (n-1))
{-
Hutton, Graham. Programming in Haskell (p. 263). Cambridge University Press. Kindle Edition. 2016.
-}
{-
Result
[1 of 1] Compiling Main ( ex6_3b.hs, interpreted )
ex6_3b.hs:3:16: error:
Ambiguous occurrence ‘^’
It could refer to either ‘Prelude.^’,
imported from ‘Prelude’ at ex6_3b.hs:1:1
(and originally defined in ‘GHC.Real’)
or ‘Main.^’, defined at ex6_3b.hs:2:3
|
3 | m ^ n = m * (m ^ (n-1)) | ^
Failed, no modules loaded.
-}
-- So I try
(^) :: Int -> Int -> Int
m Main.^ 0 = 1
m Main.^ n = m * (m Main.^ (n-1))
{-
Result
Prelude> :reload
ex6_3b.hs:2:3: error: Qualified name in binding position: Main.^
|
2 | m Main.^ 0 = 1 | ^^^^^^
[1 of 1] Compiling Main ( ex6_3b.hs, interpreted )
Failed, no modules loaded.
-}