Graphical and incremental type inference: a graph transformation approach

We present a graph grammar based type inference system for a totally graphic development language. NiMo (Nets in Motion) can be seen as a graphic equivalent to Haskell that acts as an on-line tracer and debugger. Programs are process networks that evolve giving total visibility of the execution stat...

Descripción completa

Detalles Bibliográficos
Autores: Clérici Martínez, Silvia Inés, Zoltan Torres, Ana Cristina, Prestigiacomo, Guillermo
Tipo de recurso: informe técnico
Fecha de publicación:2009
País:España
Institución:Universitat Politècnica de Catalunya (UPC)
Repositorio:UPCommons. Portal del coneixement obert de la UPC
Idioma:inglés
OAI Identifier:oai:upcommons.upc.edu:2117/87151
Acceso en línea:https://hdl.handle.net/2117/87151
Access Level:acceso abierto
Palabra clave:Type inference
Type visualization
Graph Transformation
Data visualisation
Functional languages
Graph grammars
Àrees temàtiques de la UPC::Informàtica::Programació
Descripción
Sumario:We present a graph grammar based type inference system for a totally graphic development language. NiMo (Nets in Motion) can be seen as a graphic equivalent to Haskell that acts as an on-line tracer and debugger. Programs are process networks that evolve giving total visibility of the execution state, and can be interactively completed, changed or stored at any step. In such a context, type inference must be incremental. During the net construction or modification only type safe connections are allowed. The user visualises the type information evolution and, in case of conflict, can easily identify the causes. Though based on the same ideas, the type inference system has significant differences with its analogous in functional languages. Process types are a non-trivial generalization of functional types to handle multiple outputs, partial application in any order, and curried-uncurried coercion. Here we present the elements to model graphical inference, the notion of structural and non-structural equivalence of type graphs, and a graph unification and composition calculus for typing nets in an incremental way.