Last week I've implemented full handling of rigid bodies collision. When two bodies collide, not just they velocities, but also their angular velocities are modified, as it is in real world.
Now, supposing engine is correct (it needs more testing, though), need to make it fast (after all, this is what Data Parallel Haskell is about).
One of the obvious optimization is to perform broad-phase collision detection, that is, to filter out pairs of bodies which certainly cannot collide and run collision detection algorithm (which is then called narrow-phase) on the pair of bodies left.
So, I'll need to study the subject and choose algorithm which is best suitable for nested data parallelism. And there will be good chance for that — I'm leaving to participate in IMC.
I've printed four papers describing broad-phase collision detection and will study them while I'm away (well, maybe I'll even find time to code something).