Zipper is a purely functional data structure used in functional programming to solve some problems in a way that uses notions like “context” and “hole”. It is related to the generalization of the notion of “derivative” (for types). The zipper was described by Gerard Huet in 1997. It has some conceptual similarity to the gap buffer technique sometimes used with arrays. Zippers are multidimensional in the sense that they can be used as lists or trees by placing additional restrictions upon them. Such derived data structures are usually referred to by saying a tree with zipper or a list with zipper to give the image that the structure is a tree or a list, with a zip slider attach to it as an afterthought.
xmonad is a tiling window manager for X. Windows are arranged automatically to tile the screen without gaps or overlap, maximising screen use. Window manager features are accessible from the keyboard: a mouse is optional. xmonad is extensible in Haskell, allowing for powerful customisation. Custom layout algorithms, key bindings and other extensions may be written by the user in config files. Layouts are applied dynamically, and different layouts may be used on each workspace. Xinerama is fully supported, allowing windows to be tiled on several physical screens.
R. Hinze, N. Wu, and J. Gibbons. Proceedings of the 18th ACM SIGPLAN International Conference on Functional Programming, page 209--220. New York, NY, USA, ACM, (2013)
E. de Vries, and A. Löh. Proceedings of the 10th ACM SIGPLAN workshop on Generic programming - WGP '14, page 83--94. New York, NY, USA, ACM Press, (2014)
P. Torrini, C. Lüth, C. Maeder, and T. Mossakowski. Theorem Proving in Higher-Order Logic: Emerging Trends Proceedings, page 178–193. Uni Kaiserslautern, (2007)
J. Gibbons, and G. Jones. Proceedings of the third ACM SIGPLAN international conference on Functional programming - ICFP '98, page 273--279. New York, ACM Press, (1998)
S. Peyton Jones, and J. Salkild. Proceedings of the fourth international conference on Functional programming languages and computer architecture, page 184--201. New York, NY, USA, ACM, (1989)