Re:What Is Good About Haskell?
by tsimionescu on Thursday October 03, 2019 @05:26PM
(#21152401)
As I understand it, a function use :: Item -> Item in Haskell guarantees that it can't change any property of any item;even more so if the function were use :: Item -> Effect, as could be done on the initial assumption that Items can't change.
Re:What Is Good About Haskell?
by thedataangel on Thursday October 03, 2019 @09:46PM
(#21154113)
In general you can't mutate records. Nothing prevents you from making a new one that's slightly different though. It just won't change the already existing one.
In practice this is not actually a problem. It just takes a little getting used to to get yourself out of the 'memory-address as identity' mindset that procedural languages have.
But with assumption that code was working before and you had for example function: use :: Item -> Item, and you change duration in this function, what else do you need to change to "bubble" new state? I don't get this.
BTW What's the problem with global store and passing only IDs ? I feel like this is probably valid approach and anyway ECS are implemented in similar manner AFAIK - https://en.m.wikipedia.org/wiki/Entity_component_system