
Hi And once again, firing Catch (google:catch haskell) off on this code: * new calls error, not a big surprise that this makes it incomplete * view also calls error * swap calls tail, which isn't safe unless you know some seriously deep stuff about index, and keep a detailed mapping between elements. The basic problem is that Catch can't know that successive calls to Map.lookup with the same key give the same results. You can probably eliminate this by only performing one lookup, which is also faster. * delete and focusWindow both call focus, which is incomplete. Both feature very similar code, and could do with abstracting out. The basic pattern is: focus (stack (current s)) which is unsafe - since stack may return Empty, for which focus is incomplete. * new relies on the Integral type having sensible semantics, if you pass Int or Integer its fine (machine checked), but if you create a crazy type, make it an instance of Integral then [0..n-1] may generate no elements, and your (h:t) match will fail. All the rest of the program is safe, including the partial 'with' function, as specifically annotated by dons to check. Thanks Neil