bbrown: > I am trying to print the data from a data type and also get the field > values. How would I reference those values if I am declaring a Show function. > > I should probably use a class for this, but so far it is working. > > I have something along the lines of this. > > data SimplePlayer = SimplePlayer { > shape :: MechShape, > angle :: GLfloat, > posX :: GLfloat, > posY :: GLfloat > } > > and then to use "Show", I was declaring this. > > instance Show SimplePlayer where > show a = "<Simple> posX [" ++ show a{posX} ++ "]" > > Of course, this didn't compile. > > How should I change this code to get the field label values of the type. > > Tests/GLTests.hs:20:42: parse error on input `}'
Just derive Show. Types with records will be printed with their labels. You can then also derive Read, and get serialisation for free. data SimplePlayer = SimplePlayer { shape :: MechShape , angle :: GLfloat , posX :: GLfloat , posY :: GLfloat } deriving (Read,Show) *M> show $ SimplePlayer "square" pi 1.0 (exp 1) "SimplePlayer {shape = \"square\" , angle = 3.1415927 , posX = 1.0 , posY = 2.7182817}" _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe