BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Talks.cam//talks.cam.ac.uk//
X-WR-CALNAME:Talks.cam
BEGIN:VEVENT
SUMMARY:Functional Programming in a Stateful World - Manuel Chakravarty\, 
 Tweag.io
DTSTART:20170914T100000Z
DTEND:20170914T110000Z
UID:TALK81851@talks.cam.ac.uk
CONTACT:Gemma Gordon
DESCRIPTION:Today\, functional programming is mostly used in the developme
 nt of server-side software and command line applications. This is changing
  with Swift\, a language with strong support for functional programming th
 at is pitched as the successor of Objective-C for desktop and mobile appli
 cations. Unsurprisingly\, there are obstacles. Any attempt to use Swift’
 s support for functional programming to its full potential leads to archit
 ectural challenges\, especially in the separation of stateful and purely f
 unctional computations. In desktop and especially in mobile applications\,
  a superb user experience is a central aim of application design. This typ
 ically leads to a ubiquitous use of application frameworks\, such as Cocoa
 \, which tend to encourage a tangled web of stateful\, mutually mutating o
 bjects — very much the anti-thesis of modern functional programming.\n\n
 Established approaches to disentangling stateful from pure computations\, 
 while necessary\, are not sufficient for desktop and mobile applications. 
 A careful separation of the view layer (implementing the user interface) f
 rom the application logic (forming the computational heart of the applicat
 ion) requires us to rethink application architecture and depends on adopti
 ng an interaction paradigm focusing on the data flow between components ra
 ther than on object mutation.\n\nThis talk summarises my experience with b
 uilding a desktop application including a complex user interface in Swift 
 and Haskell. The talk will provide answers to the following questions. In 
 which way is functional programming useful in desktop and mobile applicati
 ons? What are the advantages of stateless\, pure functions? What software 
 architecture maximises the impact of functional programming in that contex
 t? How can we propagate changes from user interactions\, file system & net
 work events\, and so on in a manner that keeps an application responsive\,
  while facilitating stateless computations.\n\nAlthough\, the talk mostly 
 revolves around Swift\, no previous knowledge of Swift is required and the
  main ideas translate to writing desktop and mobile applications in other 
 functional languages\, such as Scala\, F#\, or Haskell.\n
LOCATION:Computer Laboratory\, William Gates Building\, Room FW11
END:VEVENT
END:VCALENDAR
