108 research outputs found

    Doo bee doo bee doo

    Get PDF
    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 Frank operator that interprets no commands. Moreover, Frank's operators can be multihandlers which 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 an ambient ability inwards, 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 call effect 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

    Relational reasoning for effects and handlers

    Get PDF
    This thesis studies relational reasoning techniques for FRANK, a strict functional language supporting algebraic effects and their handlers, within a general, formalised approach for completely characterising observational equivalence. Algebraic effects and handlers are an emerging paradigm for representing computational effects where primitive operations, which give rise to an effect, are primary, and given semantics through their interpretation by effect handlers. FRANK is a novel point in the design space because it recasts effect handling as part of a generalisation of call-by-value function application. Furthermore, FRANK generalises unary effect handlers to the n-ary notion of multihandlers, supporting more elegant expression of certain handlers. There have been recent efforts to develop sound reasoning principles, with respect to observational equivalence, for languages supporting effects and handlers. Such techniques support powerful equational reasoning about code, such as substitution of equivalent sub-terms (‘equals for equals’) in larger programs. However, few studies have considered a complete characterisation of observational equivalence, and its implications for reasoning techniques. Furthermore, there has been no account of reasoning principles for FRANK programs. Our first contribution is a formal reconstruction of a general proof technique, triangulation, for proving completeness results for observational equivalence. The technique brackets observational equivalence between two structural relations, a logical and an applicative notion. We demonstrate the triangulation proof method for a pure simply-typed λ-calculus. We show that such results are readily formalisable in an implementation of type theory, specifically AGDA, using state-of-the-art technology for dealing with syntaxes with binding. Our second contribution is a calculus, ELLA, capturing the essence of FRANK’s novel design. In particular, ELLA supports binary handlers and generalises function application to incorporate effect handling. We extend our triangulation proof technique to this new setting, completely characterising observational equivalence for this calculus. We report on our partial progress in formalising our extension to ELLA in AGDA. Our final contribution is the application of sound reasoning principles, inspired by existing literature, to a variety of ELLA programs, including a proof of associativity for a canonical pipe multihandler. Moreover, we show how leveraging completeness leads, in certain instances, to simpler proofs of observational equivalence

    The Time of Intersection - Time dynamics in the relationship between architecture and artworks in public space.

    Get PDF
    Time has always fascinated men for its (apparently) inviolable structure and for the poetic dimension that this concept brings with it, during the history of civilization, time has been a crucial concept to understanding reality. At the beginning of the Twentieth century, thanks to the scientific discoveries, above all, Albert Einstein’s general relativity theory, the notion of time became an important element also for science for understanding the structure of the universe. The continuous and ever-faster scientific discoveries have also dissolved the linearity of time and its very nature, offering new possibilities to rethink space-time, as a series of connected, but not necessarily linear, events. Something we are experiencing today through the multi-temporality of the digital world, but which at the same time also shifts our way of perceiving physical reality. A reality made of natural objects but also objects crafted by man, from utensils to symbolic and artistic objects, from the simplest refuge to the city. Everything we do and produce is inevitably part of a space-time dimension. In this manytemporal reality in which we live, we can therefore interpret time - also - as a distinctive structural element of the things that human beings build, whether small or large, from tools to metropolises. In this background, it is very interesting to understand how time works in two of the most symbolic categories of objects of human creation, architecture and art, specifically, art in public space. How time influences their realization, thinking of it as a constructive and fundamental category of the project itself. The time that works into the artwork is naturally different from the time that works into architecture, but the overlapping of these two different times, by structure and perception, inevitably creates a third time, that we will call a “Time of Intersection”, which becomes the subject of this thesis.Il tempo ha sempre affascinato gli uomini per la sua struttura (apparentemente) inviolabile e per la dimensione poetica che questo concetto porta con sé; nel corso della storia della civiltà, il tempo è stato un concetto cruciale per la comprensione della realtà. All’inizio del XX secolo, grazie alle scoperte scientifiche, prima fra tutte la teoria della relatività generale di Albert Einstein, la nozione di tempo è diventata un elemento importante anche per la scienza per comprendere la struttura dell’universo. Le continue e sempre più rapide scoperte scientifiche hanno dissolto anche la linearità del tempo e la sua stessa natura, offrendo nuove possibilità di ripensare lo spazio-tempo, come una serie di eventi collegati, ma non necessariamente lineari. Qualcosa che oggi sperimentiamo attraverso la multitemporalità del mondo digitale, ma che allo stesso tempo sposta anche il nostro modo di percepire la realtà fisica. Una realtà fatta di oggetti naturali ma anche di oggetti creati dall’uomo, dagli utensili agli oggetti simbolici e artistici, dal più semplice rifugio alla città. Tutto ciò che facciamo e produciamo fa inevitabilmente parte di una dimensione spazio- temporale. In questa realtà pluritemporale in cui viviamo, possiamo quindi interpretare il tempo - anche - come un elemento strutturale distintivo delle cose che gli esseri umani costruiscono, siano esse piccole o grandi, dagli utensili alle metropoli. In questo contesto, è molto interessante capire come funziona il tempo in due delle categorie più simboliche di oggetti di creazione umana, l’architettura e l’arte, in particolare l’arte nello spazio pubblico. Come il tempo influenzi la loro realizzazione, pensandolo come categoria costruttiva e fondamentale del progetto stesso. Il tempo che opera nell’opera d’arte è naturalmente diverso dal tempo che opera nell’architettura, ma la sovrapposizione di questi due tempi diversi, per struttura e percezione, crea inevitabilmente un terzo tempo, che chiameremo “Tempo di Intersezione”, che diventa l’oggetto di questa tesi

    The Trinity Reporter, Spring 2012

    Get PDF
    https://digitalrepository.trincoll.edu/reporter/2099/thumbnail.jp

    Advances in component-oriented programming

    Get PDF
    WCOP 2006 is the eleventh event in a series of highly successful workshops, which took place in conjunction with every ECOOP since 1996. Component oriented programming (COP) has been described as the natural extension of object-oriented programming to the realm of independently extensible systems. Several important approaches have emerged over the recent years, including component technology standards, such as CORBA/CCM, COM/COM+, J2EE/EJB, and .NET, but also the increasing appreciation of software architecture for component-based systems, and the consequent effects on organizational processes and structures as well as the software development business as a whole. COP aims at producing software components for a component market and for late composition. Composers are third parties, possibly the end users, who are not able or willing to change components. This requires standards to allow independently created components to interoperate, and specifications that put the composer into the position to decide what can be composed under which conditions. On these grounds, WCOP\u2796 led to the following definition: "A component is a unit of composition with contractually specified interfaces and explicit context dependencies only. Components can be deployed independently and are subject to composition by third parties." After WCOP\u2796 focused on the fundamental terminology of COP, the subsequent workshops expanded into the many related facets of component software. WCOP 2006 emphasizes reasons for using components beyond reuse. While considering software components as a technical means to increase software reuse, other reasons for investing into component technology tend to be overseen. For example, components play an important role in frameworks and product-lines to enable configurability (even if no component is reused). Another role of components beyond reuse is to increase the predictability of the properties of a system. The use of components as contractually specified building blocks restricts the degrees of freedom during software development compared to classic line-by-line programming. This restriction is beneficial for the predictability of system properties. For an engineering approach to software design, it is important to understand the implications of design decisions on a system\u27s properties. Therefore, approaches to evaluate and predict properties of systems by analyzing its components and its architecture are of high interest. To strengthen the relation between architectural descriptions of systems and components, a comprehensible mapping to component-oriented middleware platforms is important. Model-driven development with its use of generators can provide a suitable link between architectural views and technical component execution platforms. WCOP 2006 accepted 13 papers, which are organised according to the program below. The organisers are looking forward to an inspiring and thought provoking workshop. The organisers thank Jens Happe and Michael Kuperberg for preparing the proceedings volume
    corecore