About: Currying is a research topic. Over the lifetime, 59 publications have been published within this topic receiving 1462 citations. The topic is also known as: Schoenfinkeling.
TL;DR: The purpose of this short article is to give a brief overview of the main features of Miranda, and to discuss basic ideas of the Miranda programming environment.
Abstract: Miranda is an advanced functional programming system which runs under the UNIX operating system 1 . The aim of the Miranda system is to provide a modern functional language, embedded in a convenient programming environment, suitable both for teaching and as a general purpose programming tool. The purpose of this short article is to give a brief overview of the main features of Miranda. The topics we shall discuss, in order, are: Basic ideas The Miranda programming environment Guarded equations and block structure Pattern matching Currying and higher order functions List comprehensions Lazy evaluation and infinite lists Polymorphic strong typing User defined types Type synonyms
TL;DR: Miranda as discussed by the authors is an advanced functional programming system which runs under the UNIX operating system (UNIX) for teaching and as a general purpose programming tool, with a focus on the development of a modern functional language, embedded in a convenient programming environment.
Abstract: Miranda is an advanced functional programming system which runs under the UNIX operating system 1 . The aim of the Miranda system is to provide a modern functional language, embedded in a convenient programming environment, suitable both for teaching and as a general purpose programming tool. The purpose of this short article is to give a brief overview of the main features of Miranda. The topics we shall discuss, in order, are: Basic ideas The Miranda programming environment Guarded equations and block structure Pattern matching Currying and higher order functions List comprehensions Lazy evaluation and infinite lists Polymorphic strong typing User defined types Type synonyms
TL;DR: Skil, an imperative language enhanced with higher order functions and currying, as well as with a polymorphic type system, is presented, which approaches the efficiency of message passing C up to a factor between 1 and 2.5.
Abstract: We present Skil, an imperative language enhanced with higher order functions and currying, as well as with a polymorphic type system. The high level of Skil allows the integration of algorithmic skeletons, i.e. of higher order functions representing parallel computation patterns. At the same time, the language can be efficiently implemented. After describing a series of skeletons which work with distributed arrays, we give two examples of parallel programs implemented on the basis of skeletons, namely shortest paths in graphs and Gaussian elimination. Run time measurements show that we approach the efficiency of message passing C up to a factor between 1 and 2.5.
TL;DR: The Futhark array programming language as discussed by the authors is a programming language designed to combine the clarity and safety of high-level functional languages with the efficiency and parallelism of low-level numerical languages.
Abstract: We present a novel programming language design that attempts to combine the clarity and safety of high-level functional languages with the efficiency and parallelism of low-level numerical languages. We treat arrays as eagerly-memoized functions on typed index sets, allowing abstract function manipulations, such as currying, to work on arrays. In contrast to composing primitive bulk-array operations, we argue for an explicit nested indexing style that mirrors application of functions to arguments. We also introduce a fine-grained typed effects system which affords concise and automatically-parallelized in-place updates. Specifically, an associative accumulation effect allows reverse-mode automatic differentiation of in-place updates in a way that preserves parallelism. Empirically, we benchmark against the Futhark array programming language, and demonstrate that aggressive inlining and type-driven compilation allows array programs to be written in an expressive, "pointful" style with little performance penalty.
TL;DR: A new approach to programming with skeletons is presented, which integrates the skeletons into an imperative host language enhanced with higher-order functions and currying, as well as with a polymorphic type system, to obtain a high-level programming language, which can be implemented very efficiently.
Abstract: Algorithmic skeletons are polymorphic higher-order functions that represent common parallelization patterns and that are implemented in parallel. They can be used as the building blocks of parallel and distributed applications by embedding them into a sequential language. In this paper, we present a new approach to programming with skeletons. We integrate the skeletons into an imperative host language enhanced with higher-order functions and currying, as well as with a polymorphic type system. We thus obtain a high-level programming language, which can be implemented very efficiently. We then present a compile-time technique for the implementation of the functional features which has an important positive impact on the efficiency of the language. After describing a series of skeletons which work with distributed arrays, we give two examples of parallel algorithms implemented in our language, namely matrix multiplication and Gaussian elimination. Run-time measurements for these and other applications show that we approach the efficiency of message-passing C up to a factor between 1 and 1.5.