[Haskell-beginners] Strange new Haskell Platform

Corentin Dupont corentin.dupont at gmail.com
Thu Sep 20 11:04:34 CEST 2012


Hi Tom,
my 2 cents here:
it looks like you had an old version of GHC and now, it's a new!
My comments inline:

On Thu, Sep 20, 2012 at 10:18 AM, bucephalus org
<bucephalus.org at gmail.com>wrote:

> Dear fellow Haskellers,
>
> last weak my Linux machine broke down and refused to start again. I bought
> a new one and installed a fresh new KDE/Linux distribution (Mint/Ubuntu)
> and it looks and feels awesome. I also installed the Haskell platform via
> the default GUI installer (mintInstall).
> But when I try to run my recovered Haskell modules again, strange things
> happen.
>
>
> First of all, I have a module that has a line
>   import System
> and that used to be fine. But now, when I try to load the module in a ghci
> session, I get a complaint:
>   Could not find module 'System'
>   It is a member of the hidden package 'haskell98-2.0.0.1'
>   ...
> The same happens if I do a
>   Prelude> :m System
> What is going on?
>

Most likely you wanted to import System.IO


>
>
> Secondly, I have another module that has a data type definition like this
>   data (Show n, Show v, Ord n, Ord v) => Automaton n v = Automaton {
>      nameSet :: Set.Set n,
>      valueSet :: Set.Set v,
>      ....
>   } deriving (Show, Eq, Ord)
> and that used to work fine, too. But now, I get the complaint
>   Illegal datatype context (use -XDatatypeContexts): (Show n, Show v, Ord
> n, Ord v) =>
> But when I follow the advice and start the module file with a
>   {-# LANGUAGE DatatypeContexts ... #-}
> I got the opposite complaint:
>   Warning: -XDatatypeContexts is depracated: It was widely considered a
> misfeature, and has been removed from the Haskell language.
> How can I clean this up?
>
>
see
http://stackoverflow.com/questions/7438600/datatypecontexts-deprecated-in-latest-ghc-why
Generally (my fellow haskeller may correct me) I think that's better to put
the class constraint on the methods rather than on the type declaration.
So it becomes:

data Automaton n v = Automaton {
     nameSet :: Set.Set n,
     valueSet :: Set.Set v
  } deriving (Show, Eq, Ord)

createAutomaton :: (Show n, Show v, Ord n, Ord v) => n -> v -> Automaton n v
createAutomaton n v = Automaton (singleton n) (singleton v)

Best,
Corentin


> Cheers,
> Tom
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20120920/ee839377/attachment.htm>


More information about the Beginners mailing list