Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Haskell-cafe] Use of the Try typeclass

8 views
Skip to first unread message

Edward Z. Yang

unread,
Dec 30, 2009, 8:52:44 PM12/30/09
to haskell-cafe
Hello all,

I am currently playing with the new cadre of failure libraries, and I'm
trying to figure out how to use the monadic version of Failure while
also getting the Try typeclass, which appears to be the standardized mechanism
for marshalling values from specific monads into the failure monad.
Unfortunately, it only seems to be defined when I import Control.Failure,
and this module is fairly incompatible with Control.Monad.Failure, as
demonstrated by this GHCI transcript:

ezyang@javelin:~/Documents/tmr$ ghci
Prelude> :m +Control.Failure
Prelude Control.Failure> :m +Control.Monad.Failure
Prelude Control.Failure Control.Monad.Failure> :t failure

<interactive>:1:0:
Ambiguous occurrence `failure'
It could refer to either `Control.Failure.failure', imported from Control.Failure
or `Control.Monad.Failure.failure', imported from Control.Monad.Failure

I'm using MTL, which might be the reason why there's all sorts of unhappiness. :-)

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

Alexander Dunlap

unread,
Dec 31, 2009, 12:07:41 AM12/31/09
to Edward Z. Yang, haskell-cafe

Why are you importing both Control.Failure and Control.Monad.Failure
when the latter just re-exports the former? Are you using the latest
versions of the two packages? Try importing just
Control.Monad.Failure.MTL; that provides the MTL failure instances and
also re-exports Control.Failure.

Alex

Edward Z. Yang

unread,
Dec 31, 2009, 12:12:17 AM12/31/09
to Alexander Dunlap, haskell-cafe
Excerpts from Alexander Dunlap's message of Thu Dec 31 00:06:58 -0500 2009:

> Why are you importing both Control.Failure and Control.Monad.Failure
> when the latter just re-exports the former? Are you using the latest
> versions of the two packages? Try importing just
> Control.Monad.Failure.MTL; that provides the MTL failure instances and
> also re-exports Control.Failure.

That's correct. I imported both when Control.Monad.Failure.MTL failed
to expose try:

ezyang@javelin:~/Dev/wizard$ ghci
Prelude> :m +Control.Monad.Failure.MTL
Prelude Control.Monad.Failure.MTL> :t try

<interactive>:1:0: Not in scope: `try'

Which, doesn't really seem like it should be the case.

Michael Snoyman

unread,
Dec 31, 2009, 12:44:32 AM12/31/09
to Edward Z. Yang, haskell-cafe
Edward,

What version of the packages are you using? Can you give the output of:

ghc-pkg list|grep failure

Michael

Edward Z. Yang

unread,
Dec 31, 2009, 1:55:12 AM12/31/09
to Michael Snoyman, haskell-cafe
Excerpts from Michael Snoyman's message of Thu Dec 31 00:43:52 -0500 2009:

> What version of the packages are you using? Can you give the output of:
>
> ghc-pkg list|grep failure

Sure thing:

(control-monad-failure-0.4), (control-monad-failure-0.5.0),
control-monad-failure-mtl-0.5.0, cpphs-1.8, cpphs-1.9,
failure-0.0.0.1, happstack-0.3.2, happstack-data-0.3.3

Additionally:

ezyang@javelin:~$ cabal upgrade failure
Resolving dependencies...
No packages to be installed. All the requested packages are already installed.
If you want to reinstall anyway then use the --reinstall flag.

Alexander Dunlap

unread,
Dec 31, 2009, 2:14:32 AM12/31/09
to Edward Z. Yang, haskell-cafe
On Wed, Dec 30, 2009 at 10:54 PM, Edward Z. Yang <ezy...@mit.edu> wrote:
> Excerpts from Michael Snoyman's message of Thu Dec 31 00:43:52 -0500 2009:
>> What version of the packages are you using? Can you give the output of:
>>
>> ghc-pkg list|grep failure
>
> Sure thing:
>
>    (control-monad-failure-0.4), (control-monad-failure-0.5.0),
>    control-monad-failure-mtl-0.5.0, cpphs-1.8, cpphs-1.9,
>    failure-0.0.0.1, happstack-0.3.2, happstack-data-0.3.3
>
> Additionally:
>
> ezyang@javelin:~$ cabal upgrade failure
> Resolving dependencies...
> No packages to be installed. All the requested packages are already installed.
> If you want to reinstall anyway then use the --reinstall flag.
>
> Cheers,
> Edward
>

Upgrade to control-monad-failure-mtl 0.6.0 and control-monad-failure 0.6.0.

Alex

Michael Snoyman

unread,
Dec 31, 2009, 3:34:43 AM12/31/09
to Edward Z. Yang, haskell-cafe
I think you need to run "cabal update"

Edward Z. Yang

unread,
Jan 1, 2010, 1:31:26 PM1/1/10
to Edward Z. Yang, haskell-cafe
Excerpts from Edward Z. Yang's message of Fri Jan 01 13:27:49 -0500 2010:
> I upgraded, but now both Control.Monad.Failure and Control.Monad.Error
> claim to be exporting "Error". Is this correct, and if so, which one
> should I hide?

Sorry my bad; I should have been importing Control.Monad.Failure.MTL.
The error has gone away.

Cheers,
Edwadrd

0 new messages