Directions in Functional Programming for Real(-Time) Applications

We review the basics of functional programming, and give a brief introduction to emerging techniques and approaches relevant to buildingreal-time software. In doingso we attempt to explain the relevance of functional programming concepts to the real-time applications domain. In particular, we address the use of types to classify properties of real-time computations.

[1]  Walid Taha,et al.  Semantics, Applications, and Implementation of Program Generation , 2001, Lecture Notes in Computer Science.

[2]  Jr. Allen B. Tucker,et al.  The Computer Science and Engineering Handbook , 1997 .

[3]  Frank Pfenning,et al.  System Description: Twelf - A Meta-Logical Framework for Deductive Systems , 1999, CADE.

[4]  Paul Hudak The Haskell School of Expression: Learning Functional Programming through Multimedia , 1999 .

[5]  Martin Hofmann Programming languages capturing complexity classes , 2000, SIGA.

[6]  Satnam Singh,et al.  Dynamic Specialisation of XC6200 FPGAs by Parial Evaluation , 1998, FPL.

[7]  Ralf Hinze,et al.  Haskell 98 — A Non−strict‚ Purely Functional Language , 1999 .

[8]  Wilfrid Hodges,et al.  A Shorter Model Theory , 1997 .

[9]  Eugenio Moggi,et al.  Notions of Computation and Monads , 1991, Inf. Comput..

[10]  David Harel,et al.  Statecharts: A Visual Formalism for Complex Systems , 1987, Sci. Comput. Program..

[11]  Martín Abadi,et al.  Types for Safe Locking , 1999, ESOP.

[12]  Walid Taha,et al.  Multi-stage programming with explicit annotations , 1997 .

[13]  Manfred Broy,et al.  Perspectives of System Informatics , 2001, Lecture Notes in Computer Science.

[14]  Chris Okasaki,et al.  Purely functional data structures , 1998 .

[15]  David Turner Functional programs as executable specifications , 1984, Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.

[16]  Erich J. Neuhold,et al.  Formal description of programming concepts , 1991 .

[17]  J. Robin B. Cockett,et al.  Strong Categorical Datatypes II: A Term Logic for Categorical Programming , 1995, Theor. Comput. Sci..

[18]  Anders Bondorf,et al.  A self-applicable partial evaluator for the lambda calculus , 1990, Proceedings. 1990 International Conference on Computer Languages.

[19]  Philip Wadler,et al.  The essence of functional programming , 1992, POPL '92.

[20]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[21]  Chris Okasaki,et al.  Even higher-order functions for parsing or Why would anyone ever want to use a sixth-order function? , 1998, Journal of Functional Programming.

[22]  Nicolas Halbwachs,et al.  LUSTRE: a declarative language for real-time programming , 1987, POPL '87.

[23]  Carl A. Gunter Semantics of programming languages: structures and techniques , 1993, Choice Reviews Online.

[24]  Edward A. Lee Computing for embedded systems , 2001, IMTC 2001. Proceedings of the 18th IEEE Instrumentation and Measurement Technology Conference. Rediscovering Measurement in the Age of Informatics (Cat. No.01CH 37188).

[25]  Patrick Cousot,et al.  Constructive design of a hierarchy of semantics of a transition system by abstract interpretation , 2002, MFPS.

[26]  Amr Sabry,et al.  Proving the correctness of reactive systems using sized types , 1996, POPL '96.

[27]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[28]  Richard B. Kieburtz,et al.  Real-time Reactive Programming for Embedded Controllers , 2001, ICFP 2001.

[29]  Marc Pouzet,et al.  Synchronous Kahn networks , 1996, ICFP '96.

[30]  Paul Hudak,et al.  A gentle introduction to Haskell , 1992, SIGP.

[31]  A. Church The calculi of lambda-conversion , 1941 .

[32]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[33]  Christoph Kreitz,et al.  The Nuprl Open Logical Environment , 2000, CADE.

[34]  Cristiano Calcagno Stratified operational semantics for safety and correctness of the region calculus , 2001, POPL '01.

[35]  Roberto Di Cosmo Review of Isomorphisms of Types:: from λ-calculus to information retrieval and language design , 1997 .

[36]  Christopher League Review of Isomorphisms of Types:: from λ-calculus to information retrieval and language design by Roberto Di Cosmo (Birkhauser, 1995) , 1997, SIGA.

[37]  Walid Taha,et al.  Closed Types as a Simple Approach to Safe Imperative Multi-stage Programming , 2000, ICALP.

[38]  Amy P. Felty,et al.  The Coq proof assistant user's guide : version 5.6 , 1990 .

[39]  Jean-Claude Raoult,et al.  Operational and Semantic Equivalence Between Recursive Programs , 1980, JACM.

[40]  M. Hofmann A Type System for Bounded Space and Functional In-Place Update , 2000, Nord. J. Comput..

[41]  Walid Taha,et al.  Multi-Stage Programming: Its Theory and Applications , 1999 .

[42]  Karl Crary,et al.  Resource bound certification , 2000, POPL '00.

[43]  Ieee Instrumentation IMTC/2001 : proceedings of the 18th IEEE Instrumentation and Measurement Technology Conference : rediscovering measurement in the age of informatics : Budapest Convention Centre, Budapest, Hungary, 21-23 May, 2001 , 2001 .

[44]  Flemming Nielson,et al.  Two-Level Semantics and Code Generation , 1988, Theor. Comput. Sci..

[45]  Philip Wadler,et al.  Linear logic, monads and the lambda calculus , 1996, Proceedings 11th Annual IEEE Symposium on Logic in Computer Science.

[46]  WadlerPhilip,et al.  Report on the programming language Haskell , 1992 .

[47]  John Launchbury,et al.  Microprocessor specification in Hawk , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[48]  Paul Hudak,et al.  Functional reactive programming from first principles , 2000, PLDI '00.

[49]  Paul Hudak,et al.  Functional reactive animation , 1997, ICFP '97.

[50]  Gordon D. Plotkin,et al.  A Powerdomain Construction , 1976, SIAM J. Comput..

[51]  Andrew Donald Gordon,et al.  Functional programming and input/output , 1995 .

[52]  Andrew Pitts,et al.  Semantics and Logics of Computation: Operationally-Based Theories of Program Equivalence , 1997 .

[53]  Walid Taha Semantics, Applications, and Implementation of Program Generation , 2003, J. Funct. Program..

[54]  Richard B. Kieburtz Taming effects with monadic typing , 1998, ICFP '98.

[55]  Robin Milner,et al.  A Calculus of Communicating Systems , 1980, Lecture Notes in Computer Science.

[56]  Abbas Edalat,et al.  A new representation for exact real numbers , 1997, MFPS.

[57]  Edward A. Lee,et al.  What's Ahead for Embedded Software? , 2000, Computer.

[58]  Antony Courtney,et al.  Genuinely Functional User Interfaces , 2001 .

[59]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[60]  Roberto Di Cosmo,et al.  Isomorphisms of Types , 1995, Progress in Theoretical Computer Science.

[61]  J. V. Tucker,et al.  Basic Simple Type Theory , 1997 .

[62]  John Hughes,et al.  Why Functional Programming Matters , 1989, Comput. J..

[63]  John Hughes,et al.  Report on the Programming Language Haskell 98 , 1999 .

[64]  Pierre Jouvelot,et al.  The type and effect discipline , 1992, [1992] Proceedings of the Seventh Annual IEEE Symposium on Logic in Computer Science.

[65]  Peter B. Henderson,et al.  Functional programming, formal specification, and rapid prototyping , 1986, IEEE Transactions on Software Engineering.

[66]  Klaus Aehlig,et al.  A syntactical analysis of non-size-increasing polynomial time computation , 2002, TOCL.

[67]  Rowan Davies,et al.  A temporal-logic approach to binding-time analysis , 1995, Proceedings 11th Annual IEEE Symposium on Logic in Computer Science.

[68]  Jozef Gruska Foundations of Computing , 1997 .

[69]  John C. Mitchell,et al.  Foundations for programming languages , 1996, Foundation of computing series.

[70]  Healfdene Goguen Typed Operational Semantics , 1995, TLCA.

[71]  David Sands A Na Ve Time Analysis and Its Theory of Cost Equivalence {draft Submitted for Publication{ , 1995 .

[72]  Klaus Aehlig,et al.  A syntactical analysis of non-size-increasing polynomial time computation , 2000, Proceedings Fifteenth Annual IEEE Symposium on Logic in Computer Science (Cat. No.99CB36332).

[73]  Bengt Nordström The alf proof editor , 1993 .

[74]  Flemming Nielson,et al.  Semantics with applications - a formal introduction , 1992, Wiley professional computing.

[75]  A. Church The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies) , 1985 .

[76]  R. Cockett,et al.  Strong categorical datatypes I , 1991 .

[77]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[78]  Robert D. Tennent,et al.  Semantics of programming languages , 1991, Prentice Hall International Series in Computer Science.

[79]  Hongwei Xi Upper bounds for standardizations and an application , 1999 .

[80]  Luca Cardelli Type systems , 1996, CSUR.

[81]  Andrew M. Pitts,et al.  Semantics and Logics of Computation: List of Contributors , 1997 .

[82]  Andrew Moran,et al.  Improvement in a lazy context: an operational theory for call-by-need , 1999, POPL '99.

[83]  Gordon Plotkin,et al.  An Operational Semantics for CSP. , 1982 .

[84]  Manfred Broy,et al.  A Fixed Point Approach to Applicative Multiprogramming , 1982 .

[85]  John Hughes,et al.  Recursion and dynamic data-structures in bounded space: towards embedded ML programming , 1999, ICFP '99.

[86]  Martin Hofmann,et al.  Linear types and non-size-increasing polynomial time computation , 1999, Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158).

[87]  Bengt Nordström,et al.  Programming in Martin-Löf's Type Theory , 1990 .

[88]  Healfdene Goguen A typed operational semantics for type theory , 1994 .

[89]  Luca Cardelli,et al.  Typeful Programming , 1989, Formal Description of Programming Concepts.

[90]  Bengt Nordström,et al.  Programming in Martin-Lo¨f's type theory: an introduction , 1990 .

[91]  Koen Claessen Embedded Languages for Describing and Verifying Hardware , 2001 .

[92]  Richard Sharp,et al.  A Statically Allocated Parallel Functional Language , 2000, ICALP.

[93]  Gérard Berry,et al.  The constructive semantics of pure esterel , 1996 .

[94]  Nicolas Halbwachs,et al.  LUSTRE: A declarative language for programming synchronous systems* , 1987 .

[95]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[96]  Robert Glück,et al.  Fast Binding-Time Analysis for Multi-Level Specialization , 1996, Ershov Memorial Conference.

[97]  Gérard Berry,et al.  Real Time Programming: Special Purpose or General Purpose Languages , 1989, IFIP Congress.

[98]  Richard B. Kieburtz Implementing Closed Domain-Specific Languages , 2000, SAIG.

[99]  Philip Wadler,et al.  The marriage of effects and monads , 1998, ICFP '98.

[100]  Paul Hudak,et al.  Real-time FRP , 2001, ICFP '01.

[101]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[102]  Mads Tofte,et al.  Region-based Memory Management , 1997, Inf. Comput..

[103]  Neil D. Jones,et al.  A partial evaluator for the untyped lambda-calculus , 1991, Journal of Functional Programming.

[104]  Neil D. Jones,et al.  Computability and complexity - from a programming perspective , 1997, Foundations of computing series.

[105]  David Turner,et al.  Ensuring Streams Flow , 1997, AMAST.

[106]  Robin Milner,et al.  Definition of standard ML , 1990 .

[107]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.