Zoetic Data and their Generators

Paul Bailes, Colin Kemp

Abstract

Functional or “zoetic” representations of data embody the behaviours that we hypothesise are characteristic to all datatypes. The advantage of such representations is that they avoid the need, in order to realize these characteristic behaviours, to implement interpretations of symbolic data at each use. Zoetic data are not unheard-of in computer science, but support for them by current software technology remains limited. Even though the first-class function capability of functional languages inherently supports the essentials of zoetic data, the creation of zoetic data from symbolic data would have to be by repeated application of a characteristic interpreter. This impairs the effectiveness of the “Totally Functional” approach to programming of which zoetic data are the key enabler. Accordingly, we develop a scheme for synthesis of generator functions for zoetic data which correspond to symbolic data constructors but which entirely avoid the need for a separate interpretation stage. This avoidance allows us to achieve a clear separation of concerns between the definitions of datatypes on the one hand and their various applications on the other.

References

  1. Abelson, H., Sussman G.J. and Sussman, J., 1996. Structure and Interpretation of Computer Programs 2nd ed. MIT Press.
  2. Backhouse, R., Jansson, P., Jeuring, J. and L. Meertens, 1999. Generic Programming - An Introduction. In S. Swierstra, S., Henriques, P. and Oliveira, J. (eds.), Advanced Functional Programming, LNCS, vol. 1608, pp. 28-115.
  3. Bailes, P. and Brough, L., 2012. Making Sense of Recursion Patterns. In Proc. 1st FormSERA: Rigorous and Agile Approaches, IEEE, pp. 16-22.
  4. Barendregt, H., 1984. The Lambda Calculus - Its Syntax and Semantics 2nd ed., North-Holland, Amsterdam.
  5. Bird R. and Wadler, P., 1988. Introduction to Functional Programming, Prentice-Hall International.
  6. Coq Proof Assistant, https://coq.inria.fr/, accessed 22 February 2016.
  7. Collins English Dictionary, http://www.collinsdictionary. com, accessed 4 July 2014.
  8. Dijkstra, E., 1982. On the role of scientific thought. In Selected writings on Computing: A Personal Perspective, pp. 60-66. Springer-Verlag, New York.
  9. Gibbons, J., Hutton G. and Altenkirch, T., 2001. When is a function a fold or an unfold?. In Electronic Notes in Theoretical Computer Science, vol. 44 (1).
  10. Haskell Platform, http://www.haskell.org/platform/, accessed 4 July 2014.
  11. Haskell Programming Language, http://www.haskell.org, accessed 4 July 2014.
  12. Hughes, J., Why Functional Programming Matters, 1989. In The Computer Journal, vol. 32 (2), pp. 98-107.
  13. Hutton, G., 1992. Higher-order functions for parsing. In Journal of Functional Programming, vol. 2, 1992, pp. 323-343.
  14. Hutton, G., 1999, A Tutorial on the Universality and Expressiveness of Fold. In Journal of Functional Programming, vol. 9, pp. 355-372.
  15. Meijer, E., Fokkinga, M. and Paterson, R., 1991. Functional Programming with Bananas, Lenses, Envelopes, and Barbed Wire. In Proc. FPCA 1991, LNCS vol. 523, pp. 142-144.
  16. Milner, R., 1977. A Theory of Type Polymorphism in Programming. In J. Comp. Syst. Scs., vol. 17, pp. 348- 375.
  17. Reynolds, J., 1985. Three approaches to type structure”. In Mathematical Foundations of Software Development, LNCS, vol. 185, pp. 97-138.
  18. Turner, D.A, 2004. Total Functional Programming. In Journal of Universal Computer Science, vol. 10, no. 7, pp. 751-768.
  19. Uustalu, T., Vene, V. and Pardo, A., 2001. Recursion Schemes from Comonads. In Nordic J. of Comput., vol. 8 (3), pp. 366-390.
  20. Vytiniotis, D., Weirich, S. and Jones, S.L.P., 2006. Boxy types: inference for higher-rank types and impredicativity. In Proc. ICFP, pp. 251-262.
  21. Wadler, P., 1985. How to Replace Failure by a List of Successes. In Proc. FPCA 1985, LNCS, vol. 201, pp. 113-128.
Download


Paper Citation


in Harvard Style

Bailes P. and Kemp C. (2016). Zoetic Data and their Generators . In Proceedings of the 11th International Conference on Evaluation of Novel Software Approaches to Software Engineering - Volume 1: ENASE, ISBN 978-989-758-189-2, pages 260-271. DOI: 10.5220/0005914902600271


in Bibtex Style

@conference{enase16,
author={Paul Bailes and Colin Kemp},
title={Zoetic Data and their Generators},
booktitle={Proceedings of the 11th International Conference on Evaluation of Novel Software Approaches to Software Engineering - Volume 1: ENASE,},
year={2016},
pages={260-271},
publisher={SciTePress},
organization={INSTICC},
doi={10.5220/0005914902600271},
isbn={978-989-758-189-2},
}


in EndNote Style

TY - CONF
JO - Proceedings of the 11th International Conference on Evaluation of Novel Software Approaches to Software Engineering - Volume 1: ENASE,
TI - Zoetic Data and their Generators
SN - 978-989-758-189-2
AU - Bailes P.
AU - Kemp C.
PY - 2016
SP - 260
EP - 271
DO - 10.5220/0005914902600271