Search results for "Functional programming"
showing 10 items of 20 documents
An object-oriented development platform for transport layer protocols
2002
Transport layer protocols have become a necessary communication element for new and classical real-time applications. The implementation of these protocols has never been structured and the designers of transport layer protocols have always developed without following any pattern. The library we have designed tries to avoid this. We propose a C++ library which could be used to develop transport layer protocols, considering every generic element inside a protocol as an object. At the end we apply the library to a well known transport layer protocol known as SNR.
Study on difficulties and misconceptions with modern type systems
2014
Functional programming is often presented as an advantageous programming paradigm by its advocates, but many students and teachers consider it to be hard to learn. One particular hurdle in learning functional programming is mastering the modern type systems employed in these languages. In this article, we identify student difficulties with means of multiple choice questions embedded into the on-line materials of an introductory functional programming course. The most prevalent misconceptions were confusing with parametric polymorphism with subtyping, the assigning too much meaning to variables names, and confounding general language patterns with special cases.
Run-time profiling of functional logic programs
2005
In this work, we introduce a profiling scheme for modern functional logic languages covering notions like laziness, sharing, and non-determinism. Firstly, we instrument a natural (big-step) semantics in order to associate a symbolic cost to each basic operation (e.g., variable updates, function unfoldings, case evaluations). While this cost semantics provides a formal basis to analyze the cost of a computation, the implementation of a cost-augmented interpreter based on it would introduce a huge overhead. Therefore, we also introduce a sound transformation that instruments a program such that its execution—under the standard semantics—yields not only the corresponding results but also the a…
Polynomial functors and polynomial monads
2009
We study polynomial functors over locally cartesian closed categories. After setting up the basic theory, we show how polynomial functors assemble into a double category, in fact a framed bicategory. We show that the free monad on a polynomial endofunctor is polynomial. The relationship with operads and other related notions is explored.
Fast narrowing-driven partial evaluation for inductively sequential programs
2005
Narrowing-driven partial evaluation is a powerful technique for the specialization of (first-order) functional and functional logic programs. However, although it gives good results on small programs, it does not scale up well to realistic problems (e.g., interpreter specialization). In this work, we introduce a faster partial evaluation scheme by ensuring the termination of the process offline . For this purpose, we first characterize a class of programs which are quasi-terminating , i.e., the computations performed with needed narrowing—the symbolic computation mechanism of narrowing-driven partial evaluation—only contain finitely many different terms (and, thus, partial evaluation termi…
Left-to-right tree pattern matching
1991
We propose a new technique to construct left-to-right matching automata for trees. Our method is based on the novel concept of prefix unifcation which is used to compute a certain closure of the pattern set. From the closure a kind of deterministic matching automaton can be derived immediately. We also point out how to perform the construction incrementally which makes our approach suitable for applications in which pattern sets change dynamically, such as in the Knuth-Bendix completion algorithm.
Towards Axiomatic Basis of Inductive Inference
2001
The language for the formulation of the interesting statements is, of course, most important. We use first order predicate logic. Our main achievement in this paper is an axiom system which we believe to be more powerful than any other natural general purpose discovery axiom system. We prove soundness of this axiom system in this paper. Additionally we prove that if we remove some of the requirements used in our axiom system, the system becomes not sound. We characterize the complexity of the quantifier prefix which guaranties provability of a true formula via our system. We prove also that if a true formula contains only monadic predicates, our axiom system is capable to prove this formula…
A Logic of Discovery
1998
A logic of discovery is introduced. In this logic, true sentences are discovered over time based on arriving data. A notion of expectation is introduced to reflect the growing certainty that a universally quantified sentence is true as more true instances are observed. The logic is shown to be consistent and complete. Monadic predicates are considered as a special case
Understanding beginners' mistakes with Haskell
2015
AbstractThis article presents an overview of student difficulties in an introductory functional programming (FP) course taught in Haskell. The motivation for this study stems from our belief that many student difficulties can be alleviated by understanding the underlying causes of errors and by modifying the educational approach and, possibly, the teaching language accordingly. We analyze students' exercise submissions and categorize student errors according to compiler error messages and then manually according to the observed underlying cause. Our study complements earlier studies on the topic by applying computer and manual analysis while focusing on providing descriptive statistics of d…
Flipping and Blending : An Action Research Project on Improving a Functional Programming Course
2016
This article reports on an action research project on improving a functional programming course by moving towards a practical and flexible study environment—flipped and blended classroom. Teaching the topic of functional programming was found to be troublesome using a traditional lectured course format. The need to increase students’ amount of practice emerged, while subsequently challenges relating to students’ independent practical coursework were observed. Particular concerns relating to group work, learning materials, and the attribute of flexibility were investigated during the third action research cycle. The research cycle was analyzed using a qualitative survey on students’ views, t…