
30 Nov
2007
30 Nov
'07
9:32 a.m.
On Fri, 30 Nov 2007, Luke Palmer wrote:
But I can't figure out a good way to represent bodies in this world. I considered:
newBody :: (Position,Velocity) -> World -> (Body,World)
Where Body is an ADT with an internal representation of an Integer or something. The problem with this is that (1) there is no way to guarantee that a Body actually exists in a World (which is a minor but still annoying issue), and (2) that there's a possibility that you could make a Body in one world and use it in another and there would be no way to detect the error.
Is it ok to have phantom types for Body and World? This would work if the number of worlds is fixed at compile time. newBody :: (Position,Velocity) -> World worldId -> (Body worldId, World worldId)