[Xmonad] xmonad is a zipper

Neil Mitchell ndmitchell at gmail.com
Thu May 17 18:16:40 EDT 2007


Hi

> > * 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.
>
> Tricky.

You can fix this with:

    where (h:ts) = Workspace 0 Empty : [ Workspace i Empty | i <- [1 ..n-1]]

or:

new n m | n > 0 && m > 0 = StackSet n (Workspace 0 Empty) [] ts xine
    where ts = [ Workspace i Empty | i <- [1 ..n-1]]

Either one will guarantee safety. Of course, you can just have Catch
check this property only on Int - however you no longer have a proof
that XMonad is safe - depends how important that "verified by Catch"
button is (button coming soon!).

Thanks

Neil


More information about the Xmonad mailing list