Doo bee doo bee doo
Autor: | Craig McLaughlin, Conor McBride, Lukas Convent, Sam Lindley |
---|---|
Rok vydání: | 2020 |
Předmět: |
bidirectional typing
Functional programming Source code business.industry Computer science Programming language media_common.quotation_subject Direct style Modular design computer.software_genre effect encapsulation QA76 Operator (computer programming) Encapsulation (computer programming) multihandlers Special case business computer Software Interpreter effect handlers media_common |
Zdroj: | Convent, L, Lindley, S, McLaughlin, C & McBride, C 2020, ' Doo bee doo bee doo ', Journal of Functional Programming, vol. 30, e9, pp. 1-53 . https://doi.org/10.1017/S0956796820000039 |
ISSN: | 1469-7653 0956-7968 |
DOI: | 10.1017/s0956796820000039 |
Popis: | We explore the design and implementation of Frank, a strict functional programming language with a bidirectional effect type system designed from the ground up around a novel variant of Plotkin and Pretnar’s effect handler abstraction. Effect handlers provide an abstraction for modular effectful programming: a handler acts as an interpreter for a collection of commands whose interfaces are statically tracked by the type system. However, Frank eliminates the need for an additional effect handling construct by generalising the basic mechanism of functional abstraction itself. A function is but the special case of a Frankoperatorthat interprets no commands. Moreover, Frank’s operators can bemultihandlerswhich simultaneously interpret commands from several sources at once, without disturbing the direct style of functional programming with values. Effect typing in Frank employs a novel form of effect polymorphism which avoids mentioning effect variables in source code. This is achieved by propagating anambient abilityinwards, rather than accumulating unions of potential effects outwards. With the ambient ability describing the effects that are available at a certain point in the code, it can become necessary to reconfigure access to the ambient ability. A primary goal is to be able to encapsulate internal effects, eliminating a phenomenon we calleffect pollution. Moreover, it is sometimes desirable to rewire the effect flow between effectful library components. We propose adaptors as a means for supporting both effect encapsulation and more general rewiring. Programming with effects and handlers is in its infancy. We contribute an exploration of future possibilities, particularly in combination with other forms of rich type systems. |
Databáze: | OpenAIRE |
Externí odkaz: |