skip to main content
article

Tangible functional programming

Published:01 October 2007Publication History
Skip Abstract Section

Abstract

We present a user-friendly approach to unifying program creation and execution, based on a notion of "tangible values" (TVs), which are visual and interactive manifestations of pure values, including functions. Programming happens by gestural composition of TVs. Our goal is to give end-users the ability to create parameterized, composable content without imposing the usual abstract and linguistic working style of programmers. We hope that such a system will put the essence of programming into the hands of many more people, and in particular people with artistic/visual creative style.

In realizing this vision, we develop algebras for visual presentation and for "deep" function application, where function and argument may both be nested within a structure of tuples, functions, etc. Composition gestures are translated into chains of combinators that act simultaneously on statically typed values and their visualizations.

References

  1. Artem Alimarine, Sjaak Smetsers, Arjen van Weelden, Marko van Eekelen, and Rinus Plasmeijer. There and back again: arrows for invertible programming. In Haskell '05: Proceedings of the 2005 ACM SIGPLAN workshop on Haskell, pages 86--97, New York, NY, USA, 2005. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Margaret Burnett, John Atwood, Rebecca Walpole Djang, James Reichwein, Herkimer Gottfried, and Sherry Yang. Forms/3: A first-order visual language to explore the boundaries of the spreadsheet paradigm. Journal of Functional Programming, 11 (2): 155--206, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Conal Elliott. Functional Images. In The Fun of Programming, "Cornerstones of Computing" series. Palgrave, March 2003.Google ScholarGoogle Scholar
  4. Keith Hanna. Interactive visual functional programming. In S Peyton Jones, editor, ICFP '02: Proceedings of the Seventh ACM SIGPLAN International Conference on Functional Programming, pages 100--112. ACM, October 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Paul Hudak and Mark P. Jones. Haskell vs. Ada vs. C++ vs Awk vs ... an experiment in software prototyping productivity. Technical report, Yale, 1994.Google ScholarGoogle Scholar
  6. John Hughes. Generalising monads to arrows. Science of Computer Programming, 37: 67--111, May 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Mark P. Jones. Type classes with functional dependencies. In ESOP '00: Proceedings of the 9th European Symposium on Programming Languages and Systems, pages 230--244, London, UK, 2000. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Joel Kelso. A visual representation for functional programs. Technical Report CS/95/01, Western Australia, Australia, 1994.Google ScholarGoogle Scholar
  9. Marc Levoy. Spreadsheets for images. In SIGGRAPH '94: Proceedings of the 21st Annual Conference on Computer Graphics and Interactive Techniques, pages 139--146, New York, NY, USA, 1994. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. A. Najork and E. Golin. Enhancing show-and-tell with a polymorphic type system and higher-order functions. In Proceedings of the IEEE Workshop 1990 on Visual Languages, pages 215--220, Skokie, IL, 1990.Google ScholarGoogle ScholarCross RefCross Ref
  11. André Pang, Don Stewart, Sean Seefried, and Manuel M. T. Chakravarty. Plugging Haskell in. In Proceedings of the ACM SIGPLAN Workshop on Haskell, pages 10--21. ACM Press, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Simon Peyton Jones and Mark Shields. Lexically scoped type variables. March 2002.Google ScholarGoogle Scholar
  13. Simon Peyton Jones, Alan Blackwell, and Margaret Burnett. A user-centred approach to functions in Excel. In ICFP '03: Proceedings of the Eighth ACM SIGPLAN International Conference on Functional Programming, pages 165--176, New York, NY, USA, 2003. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Simon Peyton Jones, Dimitrios Vytiniotis, Stephanie Weirich, and Geoffrey Washburn. Simple unification-based type inference for GADTs. In Proceedings of the Eleventh ACM SIGPLAN International Conference on Functional Programming, Portland, Oregon, September 2006. ACM SIGPLAN. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Frank Pfenning and Conal Elliott. Higher-Order Abstract Syntax. In Programming Language Design and Implementation, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Jörg Poswig, Guido Vrankar, and Claudio Moraga. VisaVis: a higher-order functional visual programming language. Journal of Visual Languages and Computing, 5 (1): 83--111, 1994.Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. John C. Reynolds. Towards a theory of type structure. In Programming Symposium, Proceedings Colloque sur la Programmation, pages 408--423, London, UK, 1974. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. David Wakeling. Spreadsheet functional programming. Journal of Functional Programming, 17 (1): 131--143, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Tangible functional programming

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!