Data types and field labels and "Show"

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 `}' -- Berlin Brown [berlin dot brown at gmail dot com] http://botspiritcompany.com/botlist/?

On Sep 27, 2007, at 14:14 , bbrown wrote:
instance Show SimplePlayer where show a = "<Simple> posX [" ++ show a{posX} ++ "]"
instance Show SimplePlayer where show a = "<Simple> posX [" ++ show (posX a) ++ "]" You might also want to consider deriving(Show). -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH

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}"

On Thu, 27 Sep 2007 11:41:00 -0700, Don Stewart wrote
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}"
I did this too: instance Show SimplePlayer where show simpleEntity = "<Simple> posX [" ++ show (posX simpleEntity) ++ "] posY [" ++ show (posY simpleEntity) ++ "]" -- Berlin Brown [berlin dot brown at gmail dot com] http://botspiritcompany.com/botlist/?
participants (3)
-
bbrown
-
Brandon S. Allbery KF8NH
-
Don Stewart