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@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@haskell.org
http://www.haskell.org/mailman/listinfo/beginners