$\mathcal{HDC}$: A HIGHER-ORDER LANGUAGE FOR DIVIDE-AND-CONQUER

2000 ◽  
Vol 10 (02n03) ◽  
pp. 239-250 ◽  
Author(s):  
CHRISTOPH A. HERRMANN ◽  
CHRISTIAN LENGAUER

We propose the higher-order functional style for the parallel programming of algorithms. The functional language [Formula: see text], a subset of the language Haskell, facilitates the clean integration of skeletons into a functional program. Skeletons are predefined programming schemata with an efficient parallel implementation. We report on our compiler, which translates [Formula: see text] programs into C+MPI, especially on the design decisions we made. Two small examples, the n queens problem and Karatsuba's polynomial multiplication, are presented to demonstrate the programming comfort and the speedup one can obtain.

1994 ◽  
Vol 04 (03) ◽  
pp. 329-338 ◽  
Author(s):  
JOHN T. O’DONNELL

The parallel scan algorithm plays an important role in parallel programming, but previous explanations of it generally rely on informal methods that fail to establish its correctness. Equational reasoning in a pure functional language provides a formal vehicle for stating the parallel scan algorithm and proving that a parallel architecture executes it correctly. The two key ideas in the proof are (1) a collection of lemmas that show how folds and scans can be decomposed into smaller problems, supporting a divide-and-conquer strategy, and (2) a formal specification of the abstract parallel architecture in the same language used to specify the problem, making it possible to reason formally about how the architecture executes the algorithm.


1995 ◽  
Vol 5 (3) ◽  
pp. 383-414 ◽  
Author(s):  
Walter A. C. A. J De Hoon ◽  
Luc M. W. J Rutten ◽  
Marko C. J. D van Eekelen

AbstractIt has been claimed that recent developments in the research on the efficiency of code generation and on graphical input/output interfacing have made it possible to use a functional language to write efficient programs that can compete with industrial applications written in a traditional imperative language. As one of the early steps in verifying this claim, this paper describes a first attempt to implement a spreadsheet in a lazy, purely functional language. An interesting aspect of the design is that the language with which the user specifies the relations between the cells of the spreadsheet is itself a lazy, purely functional and higher order language as well, and not some special dedicated spreadsheet language. Another interesting aspect of the design is that the spreadsheet incorporates symbolic reduction and normalisation of symbolic expressions (including equations). This introduces the possibility of asking the system to prove equality of symbolic cell expressions: a property which can greatly enhance the reliability of a particular user-defined spreadsheet. The resulting application is by no means a fully mature product. It is not intended as a competitor to commercially available spreadsheets. However, with its higher order lazy functional language and its symbolic capabilities it may serve as an interesting candidate to fill the gap between calculators with purely functional expressions and full-featured spreadsheets with dedicated non-functional spreadsheet languages. This paper describes the global design and important implementation issues in the development of the application. The experience gained and lessons learnt during this project are discussed. Performance and use of the resulting application are compared with related work.


1995 ◽  
Vol 5 (3) ◽  
pp. 415-442
Author(s):  
J. R. Davy ◽  
P. M. Dew

AbstractSolid modelling using constructive solid geometry (CSG) includes many examples of stylised divide-and-conquer algorithms. We identify the sources of these recurrent patterns and describe a Geometric Evaluation Library (GEL) which captures them as higher-order functions. This library then becomes the basis of developing CSG applications quickly and concisely. GEL is currently implemented as a set of separately compiled modules in the pure functional language Hope+. We evaluate our work in terms of performance and general applicability. We also assess the benefits of the functional paradigm in this domain and the merits of programming with a set of higher-order functions.


1996 ◽  
Vol 06 (04) ◽  
pp. 525-537 ◽  
Author(s):  
CHRISTOPH HERRMANN ◽  
CHRISTIAN LENGAUER

We propose a functional program skeleton for balanced fixed-degree divide-and-conquer and a method for its parallel implementation on message-passing multiprocessors. In the method, the operations of the skeleton are first mapped to a geometric computational model which is then mapped to space-time in order to expose the inherent parallelism. This approach is inspired by the method of parallelizing nested loops in the polytope model.


2021 ◽  
pp. 001112872110077
Author(s):  
Stavroola A. S. Anderson ◽  
David J. Hawes ◽  
Pamela C. Snow

Research has implicated oral language deficits as risk factors for antisocial behavior. The aim of this study was to investigate the relationship between higher order language skills and youth offending through a risk, promotive and risk-based protective factor paradigm. In a sample of adolescent males ( n = 130; 13 to 20 years; 62% youth offenders) skills in understanding ambiguity, making inferences, and understanding figurative language were demonstrated to have risk and promotive effects in association with youth offending. Figurative language also met criteria for having risk-based protective effects for youth at high offending risk due to poor nonverbal skills. Conceptualization of higher order language skills through this paradigm promotes a broader frame of reference for considering theoretical models and practical interventions.


1995 ◽  
Vol 5 (1) ◽  
pp. 1-35 ◽  
Author(s):  
Mark P. Jones

AbstractThis paper describes a flexible type system that combines overloading and higher-order polymorphism in an implicitly typed language using a system of constructor classes—a natural generalization of type classes in Haskell. We present a range of examples to demonstrate the usefulness of such a system. In particular, we show how constructor classes can be used to support the use of monads in a functional language. The underlying type system permits higher-order polymorphism but retains many of the attractive features that have made Hindley/Milner type systems so popular. In particular, there is an effective algorithm that can be used to calculate principal types without the need for explicit type or kind annotations. A prototype implementation has been developed providing, amongst other things, the first concrete implementation of monad comprehensions known to us at the time of writing.


Sign in / Sign up

Export Citation Format

Share Document