Tony Morris

Share

Senior Software Engineer at NICTA, Functional Programming Educator
tmorris.net/
@dibblego

Tony Morris is a software product developer who has deployed functional programming techniques in industry for over 10 years. Tony teaches at the tertiary level and for professional programmers with a view toward producing a viable commercial result. Tony is currently a Senior Software Engineer at NICTA where he is tasked with promoting and educating on functional programming for the benefit of all Australian software developers.

Tony takes a fastidious, principled approach to functional programming both when deployed in practice and when in a learning environment to ensure maximum yield from the effort. Tony believes that exploring principles and the following consequences provides a rewarding experience for all involved.

YOW! Lambda Jam 2014 Brisbane

Parametricity, Types are Documentation

TALK –  VIEW SLIDES WATCH VIDEO

This talk will build on the work of Philip Wadler (1) and Danielsson et al (2) to demonstrate using types to document source code behaviour and to assist in reasoning about code. Specifically, the concept of parametricity is used to tacitly eliminate possibilities in code behaviour leaving only a few, sometimes even one, remaining potential candidates.

  1. Theorems for free!, Wadler, Philip, Proceedings of the fourth international conference on Functional programming languages and computer architecture,
    pp 347 – 359, 1989, ACM
  2. Fast and loose reasoning is morally correct, Danielsson, Nils Anders and Hughes, John and Jansson, Patrik and Gibbons, Jeremy, ACM SIGPLAN Notices, vol 41, num 1, pp 206 – 217, 2006, ACM

Parametricity, Types are Documentation

WORKSHOP/JAM

This workshop will build on the work of Philip Wadler (1) and Danielsson et al (2) to demonstrate using types to document source code behaviour and to assist in reasoning about code. Specifically, the concept of parametricity is used to tacitly eliminate possibilities in code behaviour leaving only a few, sometimes even one, remaining potential candidates.

The workshop will put this into practice where participants will be asked to implement functions using parametric types to derive an unambiguous implementation. An emphasis is placed on coaching through the necessary reasoning that gives rise to solutions.

The Haskell programming language will be used in the workshop and participants are asked to have GHC and cabal installed prior.

  1. Theorems for free!, Wadler, Philip, Proceedings of the fourth international conference on Functional programming languages and computer architecture,
    pp 347 – 359, 1989, ACM
  2. Fast and loose reasoning is morally correct, Danielsson, Nils Anders and Hughes, John and Jansson, Patrik and Gibbons, Jeremy, ACM SIGPLAN Notices, vol 41, num 1, pp 206 – 217, 2006, ACM

A Modern History of Lenses

TALK –  VIEW SLIDES WATCH VIDEO

Lenses are bidirectional transformations between pairs of connected structures. Asymmetric lenses, where one of those two connected structures is taken to be primary, have been extensively studied. Lenses were first proposed to solve the view-update problem of tree-like data structures by Foster et. al and have also been applied to the construction of a relational database query language. Other work has altered the primitive structure of lenses to achieve different results.

The lens data structure has recently gained increasing attention as a technique for generic programming on algebraic data types. Lenses have been written about using various programming languages including Haskell and Scala and using many different representations.

In this talk, we will look at the lens data structure and its representations, then discuss the trade-offs and motivations for revisions. Some of the theory is discussed, before we look at the most recent incarnation of lenses by Edward Kmett, which take the Twan van Laarhoven representation, apply it to practice and also develops the theory further resulting in to the Control.Lens module.

Control.Lens resolves many of the practical limitations of lenses that had been encountered by earlier implementors by exploiting some insights that had not previously been published.

E. A. Kmett, Lenses, Folds and Traversals available at http://www.youtube.com/watch?v=cefnmjtAolY

Twan van Laarhoven; Institute for Computing and Information Sciences – Intelligent Systems, Foundations Seminar; May 2011

Control.Lens available at http://hackage.haskell.org/package/lens

Russell O’Connor; Polymorphic Update with van Laarhoven Lenses available at http://r6.ca/blog/20120623T104901Z.html

Russell O’Connor; Functor is to Lens as Applicative is to Biplate: Introducing Multiplate; 2011

Foster, J. Nathan and Greenwald, Michael B. and Moore, Jonathan T. and Pierce, Benjamin C. and Schmitt, Alan; Combinators for bidirectional tree transformations: A linguistic approach to the view-update problem; May 2007.

Bohannon, A. and Pierce, B.C. and Vaughan, J.A.; Relational lenses: a language for updatable views; 2006

Foster, J.N. and Pilkiewicz, A. and Pierce, B.C.; Quotient lenses; 2008

Jones, M.; Functional programming with overloading and higher-order polymorphism; 1995


Introduction to Functional Programming
YOW! DEPTHFIRST WORKSHOP

This workshop is targeted toward the conscientious programmer who is looking for a start to the journey of functional programming (FP). Attendees should expect to spend our time together under an intense investigation of the fundamental concepts to the FP thesis.

Central to our goal is to develop the tools and skills to continue exploring the subject independently and with peer support in the future. We will also be overcoming some of the common nomenclature that is often used in this subject, so that attendees are not presented with barriers in their own future investigations.

The goal of this workshop is not specific to any programming language, however, the Haskell programming language will be (proximately) used to achieve our goal.

PRE-REQUISITE

This workshop will be carefully designed to utilise our short time together to ensure an optimum outcome. Therefore, we request some preparation beforehand.

Please bring a suitable development machine with GHC version 7.6 (or higher) installed. The details of the installation are specific to your host operating system, however, important information can be found at http://haskell.org/ghc

If there are any troubles achieving this pre-requisite, please email me tonymorris@gmail.com and I will help you out.