15 research outputs found

    An embedded geometrical language in Haskell : construction, visualisation, proof

    Get PDF
    Geometric constructions based on compass and straight-edge have been thoroughly studied and explored. In this paper, we present a language embedded in Haskell, to describe, manipulate and analyse such constructions. The use of embedded languages has been explored in various specialised domains, and have been shown to be an excellent frontend to describe such specialised programs, enabling, for instance, the description of families of constructions as functions in the host language, which produce different specialised programs based on input parameters. In particular, we are interested, not only in providing a framework within which one may describe a construction and families of similar constructions in an algorithmic fashion, but also in providing facilities to both test and verify certain properties of constructions, such as equivalence of constructions, or equality of angles and distances in a construction.peer-reviewe

    Generic parsing combinators

    Get PDF
    Parsing combinators are a well known technique to the functional programming com munity Several de nitions of them were proposed and each one has its own advantages From the programmer point of view this wide range of possibilities implies that she needs to mantain several di erent modules with several di erent namespaces but all aimed to solve the same problem Type classes and constructor classes were introduced in Functional Programming as a mean to provide overloading that is sharing of names between functions of di erent types Several design decisions can be made when implementing class systems In particular multi parameter type classes is a di cult feature to add and its addition makes sense only if extra expressiveness is achieved with them This paper proposes the use of the class system extended with multi parameter type classes to unify the de nition of parsing combinators The advantage is that di erent solutions can share their interfaces thus simplifying the programmer s activity She uses this common interface and the actual implementation is decided only changing the type signature Moreover this use of the class system is an example of the usefulness of multi parameter type classesEje: Conferencia latinoamericana de programación funcionalRed de Universidades con Carreras en Informática (RedUNCI

    Generic parsing combinators

    Get PDF
    Parsing combinators are a well known technique to the functional programming com munity Several de nitions of them were proposed and each one has its own advantages From the programmer point of view this wide range of possibilities implies that she needs to mantain several di erent modules with several di erent namespaces but all aimed to solve the same problem Type classes and constructor classes were introduced in Functional Programming as a mean to provide overloading that is sharing of names between functions of di erent types Several design decisions can be made when implementing class systems In particular multi parameter type classes is a di cult feature to add and its addition makes sense only if extra expressiveness is achieved with them This paper proposes the use of the class system extended with multi parameter type classes to unify the de nition of parsing combinators The advantage is that di erent solutions can share their interfaces thus simplifying the programmer s activity She uses this common interface and the actual implementation is decided only changing the type signature Moreover this use of the class system is an example of the usefulness of multi parameter type classesEje: Conferencia latinoamericana de programación funcionalRed de Universidades con Carreras en Informática (RedUNCI

    Expresando hypermedia en programación funcional

    Get PDF
    En este art ículo se presentan un conjunto de herramientas constru idas sobre el lenguaje funcional lazy Haskell para describir documentos hypermediales El trabajo consiste en el dise ño e implementaci ón de un conjunto de funciones y tipos que permitan describir los elementos b asicos de un documento hypermedial nodos links componentes multimediales y la interacci on entre ellos La construcci on de los documentos de hypermedia se realiza utilizando unametodolog a composicional en la que componentes de hypermedia complejos se construyen combinando repetidamente otros m as simples Esta metodolog ía puede utilizarse tambi en para crear componentes gen ericos y reusables Otro aspecto interesante es que los documentos descritos con estas herramientas no dependen de construcciones espec ífi cas de una plataforma de hypermedia en particular Consecuentemente los documentos constru ídos de esta forma pueden ser trasladados luego a diferentes plataformas de hypermedia como HTML o Ayuda de Windows sin necesidad de efectuar modi cacionesEje: Conferencia latinoamericana de programación funcionalRed de Universidades con Carreras en Informática (RedUNCI

    Expresando hypermedia en programación funcional

    Get PDF
    En este art ículo se presentan un conjunto de herramientas constru idas sobre el lenguaje funcional lazy Haskell para describir documentos hypermediales El trabajo consiste en el dise ño e implementaci ón de un conjunto de funciones y tipos que permitan describir los elementos b asicos de un documento hypermedial nodos links componentes multimediales y la interacci on entre ellos La construcci on de los documentos de hypermedia se realiza utilizando unametodolog a composicional en la que componentes de hypermedia complejos se construyen combinando repetidamente otros m as simples Esta metodolog ía puede utilizarse tambi en para crear componentes gen ericos y reusables Otro aspecto interesante es que los documentos descritos con estas herramientas no dependen de construcciones espec ífi cas de una plataforma de hypermedia en particular Consecuentemente los documentos constru ídos de esta forma pueden ser trasladados luego a diferentes plataformas de hypermedia como HTML o Ayuda de Windows sin necesidad de efectuar modi cacionesEje: Conferencia latinoamericana de programación funcionalRed de Universidades con Carreras en Informática (RedUNCI

    Abstract Representation of Music: A Type-Based Knowledge Representation Framework

    Get PDF
    The wholesale efficacy of computer-based music research is contingent on the sharing and reuse of information and analysis methods amongst researchers across the constituent disciplines. However, computer systems for the analysis and manipulation of musical data are generally not interoperable. Knowledge representation has been extensively used in the domain of music to harness the benefits of formal conceptual modelling combined with logic based automated inference. However, the available knowledge representation languages lack sufficient logical expressivity to support sophisticated musicological concepts. In this thesis we present a type-based framework for abstract representation of musical knowledge. The core of the framework is a multiple-hierarchical information model called a constituent structure, which accommodates diverse kinds of musical information. The framework includes a specification logic for expressing formal descriptions of the components of the representation. We give a formal specification for the framework in the Calculus of Inductive Constructions, an expressive logical language which lends itself to the abstract specification of data types and information structures. We give an implementation of our framework using Semantic Web ontologies and JavaScript. The ontologies capture the core structural aspects of the representation, while the JavaScript tools implement the functionality of the abstract specification. We describe how our framework supports three music analysis tasks: pattern search and discovery, paradigmatic analysis and hierarchical set-class analysis, detailing how constituent structures are used to represent both the input and output of these analyses including sophisticated structural annotations. We present a simple demonstrator application, built with the JavaScript tools, which performs simple analysis and visualisation of linked data documents structured by the ontologies. We conclude with a summary of the contributions of the thesis and a discussion of the type-based approach to knowledge representation, as well as a number of avenues for future work in this area

    An Embedded Domain Specific Language to Model, Transform and Quality Assure Business Processes in Business-Driven Development

    Get PDF
    Business process models are produced by business analysts to graphically communicate the business requirements to IT specialists. As business processes are updated to meet the new demands in the competitive market, the underlying IT solution is adapted, to reflect precisely the current goals of the organisation. The models should then act as an abstract representation of the solution. It is essential to adapt to Business-Driven Development (BDD), whereby models are refined into the IT solution and implemented in a Service-Oriented Architecture. This means that models must be free from data and control-flow errors, such as deadlocks. If models are not quality assured at the modelling phase, errors would be discovered later and the entire BDD lifecycle would have to be repeated. Combining model transformations with quality assurance would help modellers to preserve the correctness of models and rapidly carry out modifications. Although various modelling languages have been developed to assist modellers in the production of high quality business process models, none of them adopted a functional approach, based on higher-order logic. As BDD is being adopted by most organisations, the need for such a language is becoming more evident. Since specialized functionality is required, a general-purpose language is not really necessary. Instead, a domain-specific language which provides the right abstraction and captures precisely the semantics of the business process modelling domain, should be developed. The definitions of the models would be easy to comprehend and reason about, by anyone who is not necessarily an IT specialist. However, since languages are made up of domain independent and dependent linguistic components, it is more cost effective and feasible to embed the new language in a general-purpose language. In this project we present a domain specific language embedded in the functional language, Haskell, to model, transform and quality assure business processes in Business-Driven Development. By adopting a functional approach, we developed a language: 1) with which various models can rapidly be produced in a concise and abstract manner, 2) allows users to focus on the required behaviour rather than its implementation, 3) ensures that all the required details, to generate the executable code, are specified, 4) the abstract representation can be interpreted, analysed and transformed in various ways, 5) quality assures models by carrying out three types of checks; by Haskell’s type checker, at construction-time through our embedded type system, and by specialised functions that analyse the components in the model. By embedding our language in Haskell, the models, quality assurance checks and transformations are essentially functions which can easily be composed and defined. Connection patterns, defined in the language, play an important role to ensure that definitions are concise, readable and easy to comprehend. Different from other previous modelling tools, users are able to define their own parameterized models and transformations. By generating a directed graph for the models, various types of analysis can be carried out with greater ease. Moreover, quality assurance can be combined to model transformations by declaratively defining pre and post conditions for each transformation. These conditions as well as transformations can easily be composed of other previously defined checks or transformations. With this language, we aim to capture the domain semantics of IBM’s WebSphere Business Modeler Advanced v6.0.2

    Evaluación de enfoques de implementación de lenguajes de dominio específico

    Get PDF
    Un lenguaje de dominio específico es un lenguaje de programación diseñado para ser útil para un conjunto específico de tareas, en contraste con los lenguajes de propósito general. Usar un lenguaje de dominio específico comprende riesgos y oportunidades. Se gana expresividad y se obtiene mayor productividad, pero por otro lado el costo de desarrollar un DSL suele ser alto. El presente trabajo de grado es una ampliación y a su vez una síntesis de todo el trabajo realizado dentro de un proyecto bilateral de colaboración entre nuestro país y Eslovenia sobre lenguajes de dominio específico, del cual formé parte. El proyecto se llevó a cabo entre la Facultad de Informática de la Universidad Nacional de La Plata y la Facultad de Ingeniería Eléctrica y Ciencias de la Computación de la Universidad de Maribor, Eslovenia. El objetivo del proyecto fue la investigación del proceso de desarrollo de lenguajes de dominio específico, principalmente las etapas de diseño e implementación. Se abordaron principalmente el estudio de (nuevos) patrones de diseño para DSLs y la evaluación de enfoques de implementación de DSLs con el fin de obtener pautas o guías generales para tal tarea. Este trabajo de grado está dirigido a los desarrolladores de lenguajes interesados en brindar soluciones para dominios específicos que tienen poca experiencia en esta tarea, o que buscan guías para la implementación de los lenguajes de dominio específico.Facultad de Informátic

    Evaluación de enfoques de implementación de lenguajes de dominio específico

    Get PDF
    Un lenguaje de dominio específico es un lenguaje de programación diseñado para ser útil para un conjunto específico de tareas, en contraste con los lenguajes de propósito general. Usar un lenguaje de dominio específico comprende riesgos y oportunidades. Se gana expresividad y se obtiene mayor productividad, pero por otro lado el costo de desarrollar un DSL suele ser alto. El presente trabajo de grado es una ampliación y a su vez una síntesis de todo el trabajo realizado dentro de un proyecto bilateral de colaboración entre nuestro país y Eslovenia sobre lenguajes de dominio específico, del cual formé parte. El proyecto se llevó a cabo entre la Facultad de Informática de la Universidad Nacional de La Plata y la Facultad de Ingeniería Eléctrica y Ciencias de la Computación de la Universidad de Maribor, Eslovenia. El objetivo del proyecto fue la investigación del proceso de desarrollo de lenguajes de dominio específico, principalmente las etapas de diseño e implementación. Se abordaron principalmente el estudio de (nuevos) patrones de diseño para DSLs y la evaluación de enfoques de implementación de DSLs con el fin de obtener pautas o guías generales para tal tarea. Este trabajo de grado está dirigido a los desarrolladores de lenguajes interesados en brindar soluciones para dominios específicos que tienen poca experiencia en esta tarea, o que buscan guías para la implementación de los lenguajes de dominio específico.Facultad de Informátic

    Generación de monitores C embebidos para especificaciones Lola

    Get PDF
    En las últimas décadas se ha experimentado un gran crecimiento en el desarrollo de sistemas embebidos para diversas áreas de aplicación, muchas de las cuales involucran sistemas críticos donde resulta imprescindible proveer garantías de correctitud. Las técnicas de verificación formal clásicas, que permiten demostrar matemáticamente propiedades de correctitud de un modelo, si bien proveen garantías fuertes, pueden resultar imprácticas o incluso imposibles de aplicar en sistemas completos de escala industrial. Como respuesta a este problema, el área de Runtime Verification estudia cómo generar monitores a partir de especificaciones declarativas, con el objetivo de analizar la traza de una (única) ejecución para verificar su correctitud. Con el tiempo, fueron surgiendo enfoques más expresivos que permiten realizar análisis más complejos, como es el caso de Lola, un lenguaje de especificación junto con algoritmos para el monitoreo de sistemas síncronos. Desde su publicación en 2005, han surgido numerosos trabajos basados en este lenguaje. Uno de los más recientes es hLola, un lenguaje de dominio específico embebido en Haskell para escribir especificaciones junto con un motor para ejecutar los monitores. Esta implementación presenta varias características atractivas, entre las que se destaca la extensibilidad del lenguaje a nuevos tipos de datos, algo no muy habitual en la mayoría de los lenguajes de Runtime Verification. A partir de estos antecedentes y de la experiencia de uso del lenguaje C en sistemas críticos, esta tesina presenta un lenguaje de dominio específico embebido en Haskell, llamado MCLola, para la síntesis de monitores C a partir de especificaciones de alto nivel basadas en el lenguaje Lola
    corecore