In addition to some new features, the overall exception handling system is more predictable, the package is better documented and has more tests. Check it out!
I could watch Alexis King talk about #Haskell all day. Theres something about the way she speaks where she shifts her cadence in anticipation of where the content will raise questions, always rounding back to a resumed pace in even syncopation which illustrates the process of reasoning in the course of spoken presentation and is exemplary of the best programming pedagogy.
fresh :: FDState s c -> (Int, FDState s c)
fresh = id &&& id
>>> first (^. nextId)
>>> ((i, s) -> (i, s & alive %~ Set.insert i))
>>> second (nextId %~ (+ 1))
fresh :: FDState s c -> (Int, FDState s c)
fresh s@FDState {_nextId = i, _alive = as} =
(i, s {_nextId = i + 1, _alive = Set.insert i as})