Multiple "pointers" to "objects"
Ron de Bruijn
rondebruijn@yahoo.com
Sat, 12 Jul 2003 07:47:02 -0700 (PDT)
Hi there,
I was almost certain that Haskell was a great language
until I wanted to make a real usefull program and got
the following problem.
I have
data Lesson = Lesson Teacher SomeOtherProperties
deriving Show
data Subject = Subject Name [Teacher]
SomeOtherProperties
deriving Show
data Teacher = Teacher TimeTable SomeOtherProperties
What I want is that when I put some lesson in my
timetable, the resources needed for that lesson are
used up, so for example the timetable of a teacher
will fill with each lesson that it gives.
The problem is that when I "model" it this way, the
state of the teachers that can give a certain subject
will not change (suppose I have some function that
fills one timeslot of the timetable of a teacher).
It makes it even harder, because of the fact that one
teacher can teach multiple subjects.
In an OO-language I would simply let each element of
the list of TeacherObjects of Subjects point to some
TeacherObject, so it remembers it state, but that's
anti-Haskell.
It's ofcourse possible to put a list of Subjects that
a Teacher teaches in the data declaration of the
teacher. But then there is no way of saying
efficiently (O(1) Just a pointer or index):"Give me a
list of all teachers that give Physics", and that's
just what I need.
I could use a hashtable which includes the
teachersobjects as values and the subjects as keys,
but that isn't a very beautiful solution. This would
give me(building of Hashtable O(n) and getting all
teachers of some subject O(1)), so it would do.
I am almost sure there exist some nice way of doing
this, because otherwise Haskell would be completely
useless IMHO, but I don't know it.
Do you have any idea?
Greets Ron
__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com