質問。
getnameに入れる値の構造は(c,name,age)じゃダメなのでしょうか?
[Haskellで学ぶ原理と技法」の5章で躓いた。
data Person = Person {c :: Class , name :: String , age :: Int}deriving (Show)
data Class = Student | Teacher
deriving (Show)

type Name = String
type Age = Int
--data List = [Person]
getname :: Person -> Name
getname (_ ,name ,_) = name
getage :: Person -> Age
getage (_ , _ ,age) = age

後ほど[Person]を使って多くのデータを処理したいと思っています。
下のは動くけど、[Person]出来ないし、[(class, name, age)]だけにしたいし。
data Person = Person (Class, Name , Age)
deriving (Show)

data Class = Student | Teacher
deriving (Show)

type Name = String
type Age = Int

--data List = [Person]
name :: Person -> Name
name (Person (_,name, _)) = name

age :: Person -> Age
age (Person (_ ,_,age)) = age