Academia.eduAcademia.edu

Functional Programming

3,792 papers
13,156 followers
AI Powered
Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids changing state or mutable data. It emphasizes the use of first-class and higher-order functions, enabling a declarative approach to problem-solving and promoting code that is more predictable and easier to reason about.
Recent functional logic languages such as Curry and Toy combine lazy functional programming with logic programming features including logic variables, non-determinism, unification, narrowing, fair search, concurrency, and residuation. In... more
The parallelization of sequential programs is an adequate approach for the easy use of architectural features provided on parallel computers. We propose to enhance this technique with the notion of semantic parallelization. The principle... more
Block cipher (BC) is a type of symmetric cipher used to encrypt data. Despite its advantages, it faces a substantial challenge. Writing the script code for the BC scheme accurately using General-Purpose Programming Languages (GPPLs) poses... more
This paper presents a compiler for interaction nets, which, just like term rewriting systems, are user-definable rewrite systems which offer the ability to specify and program. In the same way that the lambda-calculus is the foundation... more
Vector programming is an important topic in many Introduction to Computer Science courses. Despite the importance of vectors, learning vector programming is a source of frustration for many students. Much of the frustration is rooted in... more
We show that two A-calculus terms can be observationally congruent (i.e., agree in all contexts) but their continuation-passing transforms may not be. We also show that two terms may be congruent in all untyped contexts but fail to be... more
Copy elimination is an important optimization for compiling functional languages. Copies arise because these languages lack the concepts of state and variable; hence updating an object involves a copy in a naive implementation. Copies are... more
Copy elimination is an important optimization for compiling functional languages. Copies arise because these languages lack the concepts of state and variable; hence updating an object involves a copy in a naive implementation. Copies are... more
Session types are a well-established approach to ensuring protocol conformance and the absence of communication errors such as deadlocks in message passing systems. Implicit parameters, introduced by Haskell and popularised in Scala, are... more
This document contains a description of a Common Lisp extension that allows a programmer to write functional programs that use normal order evaluation, as in non-strict languages like Haskell. The extension is relatively straightforward,... more
The category of open games, which provides a strongly compositional foundation of economic game theory, is intermediate between symmetric monoidal and compact closed. More precisely it has counits with no corresponding units, and a... more
This paper introduces CλaSH, a novel hardware specification environment, by discussing several non-trivial examples. CλaSH is based on the functional language Haskell, and exploits many of its powerful abstraction mechanisms such as... more
Stencil computations are array based algorithms that apply a computation to all array elements in a fixed regular pattern and can be found in many scientific and engineering applications. Parallelization of these applications becomes more... more
This paper introduces the hardware specification system CλaSH by elaborating on a few non-trivial examples. CλaSH is a compiling system that translates a subset of Haskell into synthesizable VHDL by a rewriting technique. This subset of... more
Performing accurate Named Entity (NE) classification (NEC) has recently become a central issue in many NLP applications, such as Information Extraction and Question Answering, among others. Most state-of-the-art NEC systems use... more
In this article we present the implementation of an environment supporting Lévy's optimal reduction for the λ-calculus [Lév78] on parallel (or distributed) computing systems. In a similar approach to Lamping's one in [Lam90], we base our... more
Kilim: A Server Framework with Lightweight Actors, Isolation Types & Zero-copy Messaging Sriram Srinivasan Internet services are implemented as hierarchical aggregates of communicating components: networks of data centers, networks of... more
This paper presents a novel gate sizing methodology to minimize the leakage power in the presence of process variations. The leakage and delay are modeled as posynomials functions to formulate a geometric programming problem. The existing... more
We describe a computer program that proves theorems using mathematical induction. It is used to prove properties of computer programs. Helpful tips guide the program's search for a proof. These tips are used to form proof plans, which... more
Many analysis problems can be cast in the form of evaluating minimal models of a logic program. Although such formulations are appealing due to their simplicity and declarativeness, they have not been widely used in practice because,... more
HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or... more
X := pre(X)-1 reset IN every pre(X)<0 Input IN returns X (mmmmhhh??) IN is provided only when used IN 2 3 5 ZX 0
Nested datatypes have been widely studied in the past 25 years, both theoretically using category theory, and practically in programming languages such as HASKELL. They consist in recursive polymorphic datatypes where the type parameter... more
HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or... more
In this paper we introduce Chisel, a new hardware construction language that supports advanced hardware design using highly parameterized generators and layered domain-specific hardware languages. By embedding Chisel in the Scala... more
In order to develop portable parallel software a. reasonable abstraction from parallel hardware is necessary. Over the last few years, such abstractions have become available in the form of communication libraries. In this paper we first... more
In this paper we develop an algorithm to compute explicit robust MPC solutions for constrained MIMO systems with internal uncertainties and external disturbances. The approach is based on a rewinding prediction strategy to realize the... more
We give a presentation of a trace-based semantics of Core ELLA, a covering subset of the commercial hardware description language ELLA, using a synchronous process algebra called ELLA PROCESS ALGEBRA (EPA). This report is a semantics... more
Nested datatypes have been widely studied in the past 25 years, both theoretically using category theory, and practically in programming languages such as HASKELL. They consist in recursive polymorphic datatypes where the type parameter... more
Despite several architectural advantages for the challenges of future manufacturing systems, the IEC 61499 standard is currently not widely accepted by industry. One advantage of the IEC 61499 is the concept of downtimeless system... more
Programs which perform partial evaluation, beta-expansion, and certain optimizations on programs, are studied with respect to implementation and application. Two implementations are described, one "'interpretive" partial evaluator, which... more
Insertion Sort is a simple and intuitive sorting algorithm that works similarly to the way you might sort playing cards in your hands. It builds the sorted array one element at a time by repeatedly taking an element from the unsorted... more
Resumen En este trabajo presentamos una propuesta para apoyar la enseñanza de métodos formales en una currícula de grado, usando el asistente de pruebas Coq y conceptos del área de Teoría de Tipos. Proponemos un curso/taller de... more
Strategisches Management ist häufig extern orientiert: Organisationen wollen Einfluss auf Stakeholder wie Kunden, Lieferanten oder Politik nehmen, um günstige Umfeldbedingungen zu schaffen. Doch in Märkten, die von den Aktivitäten... more
There has been a lot of interest recently in the problem of building object-oriented applications by somehow combining other application fragments that provide their own overlapping definitions or expectations of the same domain objects.... more
Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates that a very small number of rules for... more
The integration of functional and logic programming languages has been a topic of great interest in the last decade. Many proposals have been made, yet none is completely satisfactory especially in the context of higher order functions... more
The software industry has identified, in a vast proportion, the object-oriented programming paradigm with the variant based in classes and single inheritance. Particularly, design patterns and their best-known implementations are largely... more
In this paper we revisit the λ-calculus with patterns, originating from the practice of functional programming language design. We treat this feature in a framework ranging from pure λ-calculus to orthogonal combinatory reduction systems.
The preprocessor of the C language provides a standard way to generate code at compile time. However, writing and understanding these macros is difficult. Lack of typing, statelessness and uncommon syntax are the main reasons of this... more
We present ert , a type theory supporting refinement types with explicit proofs. Instead of solving refinement constraints with an SMT solver like DML and Liquid Haskell, our system requires and permits programmers to embed proofs of... more
In the early stages of the building design process, during the programming and the proposal stages, both user activities and the building are in focus for the designer. In spite of this, today's CAD programs give no support for management... more
Motivated by the search for a body of mathematical theory to support the semantics of computational effects, we first recall the relationship between Lawvere theories and monads on Set. We generalise that relationship from Set to an... more
The choice of the programming language impacts the efficiency of the application and the robustness of the code. The characteristics of Erlang as a functional programming language supported distributed real time computing allowed us to... more
The Centers for Disease Control and Prevention began funding a Smoke Alarm Installation and Fire Safety Education (SAIFE) program in 1998. This program involves the installation of lithium-powered ''10-year'' smoke alarms in homes at high... more
Development of the methodology of designing of electronic textbooks with an opportunity of individual learning strategy's identification is considered in the article. In this regard a formal approach aimed at research of knowledge testing... more
is a Research and Training Centre of the United Nations University (UNU). It is based in Macau, and was founded in 1991. It started operations in July 1992. UNU-IIST is jointly funded by the Governor of Macau and the governments of the... more
The idea of using unfolding as a way of computing a program semantics has been applied successfully to logic programs and has shown itself a powerful tool that provides concrete, implementable results, as its outcome is actually source... more