functional programming (FP) is a programming paradigm in which the mathematical function evaluation is the main block in building the software. FP languages are more suitable for handling parallelism and concurrency. ...
详细信息
ISBN:
(纸本)9781538626498
functional programming (FP) is a programming paradigm in which the mathematical function evaluation is the main block in building the software. FP languages are more suitable for handling parallelism and concurrency. Over the years, many different FP languages and programming style had been proposed and studied. However, FP is generally considered to be difficult to learn and master than another programming paradigms such as object-oriented programming. In this paper, we aim at deriving an understanding of practical impacts of using this paradigm in the software engineering practices through a literature review.
A modular framework for the development of medical applications that promotes deterministic, robust and correct code is presented. The system is based on the portable Gambit Scheme programming language and provides a ...
详细信息
ISBN:
(纸本)9781450323260
A modular framework for the development of medical applications that promotes deterministic, robust and correct code is presented. The system is based on the portable Gambit Scheme programming language and provides a flexible cross-platform environment for developing graphical applications on mobile devices as well as medical instrumentation interfaces running on embedded platforms. Real world applications of this framework for mobile diagnostics, telemonitoring and automated drug infusions are reported. The source code for the core framework is open source and available at: https://***/part-cw/lambdanative.
This paper forms the notes of a two-hours lecture introducing Object-Oriented functional programming with Lisp as a support language. We start by remembering the key concepts of functional programming, imperative prog...
详细信息
ISBN:
(纸本)9783540880585
This paper forms the notes of a two-hours lecture introducing Object-Oriented functional programming with Lisp as a support language. We start by remembering the key concepts of functional programming, imperative programming and object-oriented programming. We continue with a discussion of object-orientedness in Lisp, including Lisp packages, Lisp data structures and CLOS - Common Lisp Object System. We then remind the alternate approach, of functional paradigm in C++. A suggestion for a lab session follows.
Among programming styles the functional one has gained an increasing attention in the recent years. Lisp dialects and Common Lisp in particular have always been languages of choice for artificial intelligence systems ...
详细信息
ISBN:
(纸本)9783642132315
Among programming styles the functional one has gained an increasing attention in the recent years. Lisp dialects and Common Lisp in particular have always been languages of choice for artificial intelligence systems implementation. Debugging functional algorithms based in the natural way on recursion and immutability is especially hard. This article presents a library that allows the programmer to mark and trace Common Lisp expressions evaluation.
The separation of concerns is a fundamental principle in software engineering. Crosscutting concerns are concerns that do not align with hierarchical and block decomposition supported by mainstream programming languag...
详细信息
ISBN:
(纸本)9783642026546
The separation of concerns is a fundamental principle in software engineering. Crosscutting concerns are concerns that do not align with hierarchical and block decomposition supported by mainstream programming languages. In the past, crosscutting concerns have been studied mainly in the context of object orientation. Feature orientation is a novel programming paradigm that supports the (de)composition of crosscutting concerns in a system with a hierarchical block structure. In two case studies we explore the problem of crosscutting concerns in functional programming and propose two solutions based on feature orientation.
Manufacturing process can be described by transfer functions, which act on the manufactured objectʼs attributes, in the same way as computing functions act on data. Machines are regarded as interpretation resources, w...
详细信息
Manufacturing process can be described by transfer functions, which act on the manufactured objectʼs attributes, in the same way as computing functions act on data. Machines are regarded as interpretation resources, with the same conceptual function as processors, and a factory is seen as an object-flow interpreter. This analogy is explored in several ways, and it can be considered a starting point for the design on the process controller. The resulting methodology should contribute towards better communication between computer control users and suppliers, leading to faster and more reliable control software design.
. Abstract interpreters are complex pieces of software: even if the abstract interpretation theory and companion algorithms are well understood, their implementations are subject to bugs, that might question the sound...
详细信息
ISBN:
(数字)9783030888060
ISBN:
(纸本)9783030888060;9783030888053
. Abstract interpreters are complex pieces of software: even if the abstract interpretation theory and companion algorithms are well understood, their implementations are subject to bugs, that might question the soundness of their computations. While some formally verified abstract interpreters have been written in the past, writing and understanding them requires expertise in the use of proof assistants, and requires a non-trivial amount of interactive proofs. This paper presents a formally verified abstract interpreter fully programmed and proved correct in the F* verified programming environment. Thanks to F* refinement types and SMT prover capabilities we demonstrate a substantial saving in proof effort compared to previous works based on interactive proof assistants. Almost all the code of our implementation, proofs included, written in a functional style, are presented directly in the paper.
Java 8 introduces two functional features: lambda expressions and functional operations like map or filter that apply a lambda expression over the elements of a Collection. Refactoring existing code to use these new f...
详细信息
ISBN:
(纸本)9781467330763
Java 8 introduces two functional features: lambda expressions and functional operations like map or filter that apply a lambda expression over the elements of a Collection. Refactoring existing code to use these new features enables explicit but unobtrusive parallelism and makes the code more succinct. However, refactoring is tedious (it requires changing many lines of code) and error-prone (the programmer must reason about the control-flow, data-flow, and side-effects). Fortunately, these refactorings can be automated. We present LAMBDAFICATOR, a tool which automates two refactorings. The first refactoring converts anonymous inner classes to lambda expressions. The second refactoring converts for loops that iterate over Collections to functional operations that use lambda expressions. In 9 open-source projects we have applied these two refactorings 1263 and 1595 times, respectively. The results show that LAMBDAFICATOR is useful. A video highlighting the main features can be found at: http://***/watch?v=EIyAflgHVpU
The most successful systems for "big data" processing have all adopted functional APIs. We present a new programming model we call function passing designed to provide a more principled substrate on which to...
详细信息
ISBN:
(纸本)9781450340762
The most successful systems for "big data" processing have all adopted functional APIs. We present a new programming model we call function passing designed to provide a more principled substrate on which to build data-centric distributed systems. A key idea is to build up a persistent functional data structure representing transformations on distributed immutable data by passing well-typed serializable functions over the wire and applying them to this distributed data. Thus, the function passing model can be thought of as a persistent functional data structure that is distributed, where transformations to data are stored in its nodes rather than the distributed data itself. The model simplifies failure recovery by design-in the event of a failure, data is recovered by replaying function applications atop immutable data loaded from stable storage. Deferred evaluation is also central to our model;by incorporating deferred evaluation into our design only at the point of initiating network communication, the function passing model remains easy to reason about while remaining efficient in time and memory. We formalize our programming model using small-step operational semantics, and we provide an open-source implementation of our model in and for the Scala programming language, along with a case study of several example frameworks and end-user programs written atop of this model.
We describe a new method to induce functional programs from small sets of non-recursive equations representing a subset of their input-output behaviour. Classical attempts to construct functional Lisp programs from in...
详细信息
ISBN:
(纸本)9783642005145
We describe a new method to induce functional programs from small sets of non-recursive equations representing a subset of their input-output behaviour. Classical attempts to construct functional Lisp programs from input/output-examples are analytical, i.e., a Lisp program belonging to a strongly restricted program class is algorithmically derived from examples. More recent approaches enumerate candidate programs and only test them against the examples until a program which correctly computes the examples is found. Theoretically, large program classes can be induced generate-and-test based, yet this approach suffers from combinatorial explosion. We propose a combination of search and analytical techniques. The method described in this paper is search based in order to avoid strong a-priori restrictions as imposed by the classical analytical approach. Yet candidate programs are computed based on analytical techniques from the examples instead of being generated independently from the examples. A prototypical implementation shows first that programs are inducible which are not in scope of classical purely analytical techniques and second that the induction times are shorter than in recent generate-and-test based methods.
暂无评论