108 research outputs found
Doo bee doo bee doo
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
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.
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
https://digitalrepository.trincoll.edu/reporter/2099/thumbnail.jp
Advances in component-oriented programming
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
- …