[Haskell] how can I refer to a symbol in a module that is imported 'qualified'?

Anton van Straaten anton at appsolutions.com
Sat Apr 11 22:34:54 EDT 2009


Norman Ramsey wrote:
> I need to resolve a name clash between two different Haskell modules
> that want to use the same infix operator (<*>).  The Haskell 98
> report says that
> 
>     modid.varsym
> 
> is permitted, but I can't get it to work.  
> In their entirety here are Test.hs:
> 
>     module Test
>     where
> 
>     import qualified Test2 as T
> 
>     three = T.<*>
> 
> and Test2.hs:
> 
>     module Test2
>     where
>     (<*>) = 3
> 
> But trying to compile results in an error message:
> 
>     Test.hs:6:12: parse error on input `T.<*>'
> 
> I tried T.(<*>) but that doesn't work either (as indeed the Haskell 98
> report says it should not).
> 
> How can I refer to a symbolic name defined in a module imported by
> `import qualified`?

This works:

    three = (T.<*>)

Anton


More information about the Haskell mailing list