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.

Functional programmingbusiness.industryComputer scienceTransport layerElement (category theory)Network layerObject (computer science)businessApplication layerProtocol (object-oriented programming)OSI modelComputer networkMELECON '98. 9th Mediterranean Electrotechnical Conference. Proceedings (Cat. No.98CH36056)
researchProduct

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.

Parametric polymorphismta113Functional programmingComputer sciencePedagogyComputingMilieux_COMPUTERSANDEDUCATIONProgramming paradigmMathematics educationType (model theory)SubtypingMeaning (linguistics)Multiple choice
researchProduct

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…

Profiling (computer programming)Functional programmingTheoretical computer sciencebusiness.industryComputer scienceSubroutineComputationSoftware developmentProgram transformationcomputer.software_genreSemanticsSemantics of logicLogical programmingbusinesscomputerInterpreter
researchProduct

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.

Pure mathematicsPolynomialFunctorGeneral MathematicsMathematics - Category Theory18C15 18D05 18D50 03G30517 - AnàlisiMonad (functional programming)BicategoryMathematics::Algebraic TopologyCartesian closed categoryMathematics::K-Theory and HomologyMathematics::Category TheoryPolynomial functor polynomial monad locally cartesian closed categories W-types operadsFOS: MathematicsPolinomisCategory Theory (math.CT)Mathematics
researchProduct

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…

Scheme (programming language)Class (computer programming)Functional programmingTheoretical computer scienceComputer scienceComputationProgram transformationcomputer.software_genreSymbolic computationComputer Graphics and Computer-Aided DesignPartial evaluationProgram analysisLogical programmingSpecialization (logic)Automatic programmingcomputerSoftwareInterpretercomputer.programming_languageProceedings of the tenth ACM SIGPLAN international conference on Functional programming
researchProduct

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.

Set (abstract data type)PrefixFunctional programmingTheoryofComputation_MATHEMATICALLOGICANDFORMALLANGUAGESMatching (graph theory)Computer scienceClosure (topology)Point (geometry)Construct (python library)AlgorithmAutomaton
researchProduct

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…

SoundnessDiscrete mathematicsPredicate logicSMorse–Kelley set theoryComputer scienceNon-well-founded set theoryZermelo–Fraenkel set theoryConstructive set theoryInductive reasoningAxiom schemaUrelementScott's trickMonad (functional programming)First-order logicAxiom of extensionalityMathematics::LogicTheoryofComputation_MATHEMATICALLOGICANDFORMALLANGUAGESTheoryofComputation_LOGICSANDMEANINGSOFPROGRAMSCalculusAxiom of projective determinacyAxiom of choiceKripke–Platek set theoryAction axiomAxiom
researchProduct

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

TheoryofComputation_MATHEMATICALLOGICANDFORMALLANGUAGESTheoretical computer scienceComputer sciencebusiness.industrymedia_common.quotation_subjectArtificial intelligenceSpecial caseCertaintyMonad (functional programming)businessPredicate (grammar)Sentencemedia_common
researchProduct

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…

ta113Functional programmingDescriptive statisticsProgramming languageComputer scienceFunction applicationcomputer.software_genrebeginners' mistakesSyntaxCategorizationHaskellComputingMilieux_COMPUTERSANDEDUCATIONMathematics educationTeaching languagecomputer analysisHaskellCompilercomputerSoftwarecomputer.programming_languageJournal of Functional Programming
researchProduct

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…

toimintatutkimusComputingMilieux_COMPUTERSANDEDUCATIONfunctional programmingsulautuva opetusitseopiskelukäänteinen opetus
researchProduct