data FigType = TR1 | TR2 | TR3 | TR4 | SQ | L1 | L2 | Z1 | Z2 | Z3 | Z4 | NoFigure
               deriving (Enum)

randomFigure :: IO FigType
randomFigure = toEnum <$> randomRIO (1,11)

Bob

On 14 Mar 2010, at 10:57, Evgenij Merenkov wrote:

Hello.

I have the following data and it's constructors:

FigType = TR1 | TR2 | TR3 | TR4 | SQ | L1 | L2 | Z1 | Z2 | Z3 | Z4 | NoFigure

I need to randomly return one of them in a function. The obvious solution to me, is simply using a random number generator and case statement, where each value generated is associated with each data constructor. Like this:

import System.Random

randomFigType :: IO FigType
randomFigure = do
  x <- randomRIO (1::Int,11::Int)
  return $ case x of
             1 -> TR1
             2 -> TR2
             3 -> TR3
e t.c.

But is there a more direct way to do this?


Hotmail: Trusted email with Microsoft’s powerful SPAM protection. Sign up now. _______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners