Results 1 - 10
of
12
Forms/3: A First-Order Visual Language to Explore the Boundaries of the Spreadsheet Paradigm
"... Although detractors of functional programming sometimes claim that functional programming is too difficult or counterintuitive for most programmers to understand and use, evidence to the contrary can be found by looking at the popularity of spreadsheets. The spreadsheet paradigm, a first-order subs ..."
Abstract
-
Cited by 81 (37 self)
- Add to MetaCart
Although detractors of functional programming sometimes claim that functional programming is too difficult or counterintuitive for most programmers to understand and use, evidence to the contrary can be found by looking at the popularity of spreadsheets. The spreadsheet paradigm, a first-order subset of the functional programming paradigm, has found wide acceptance among both programmers and end users. Still, there are many limitations with most spreadsheet systems.
Analysis and Efficient Implementation of Functional Programs
, 1991
"... machines and implementations : : : : : : : : : : : : : : : : : : : 7 1.4 Optimized implementation : : : : : : : : : : : : : : : : : : : : : : : : : : : 9 1.5 Plan of the report : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 10 2 Semantics-Based Program Analysis 12 2.1 Semantics an ..."
Abstract
-
Cited by 48 (1 self)
- Add to MetaCart
machines and implementations : : : : : : : : : : : : : : : : : : : 7 1.4 Optimized implementation : : : : : : : : : : : : : : : : : : : : : : : : : : : 9 1.5 Plan of the report : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 10 2 Semantics-Based Program Analysis 12 2.1 Semantics and program analysis : : : : : : : : : : : : : : : : : : : : : : : : 12 2.2 Abstract interpretation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 12 2.3 Semantic analysis information : : : : : : : : : : : : : : : : : : : : : : : : : 13 2.4 Instrumented semantics : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 14 2.5 Correctness of analyses : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 15 3 A Lazy Example Language 19 3.1 The lazy language L : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 19 3.2 The call by name Krivine machine : : : : : : : : : : : : : : : : : : : : : : : 21 3.3 Adding data structures : : : : : : : : : : : : : : : : : : : : : : : ...
Implementing a Functional Spreadsheet in Clean
- Journal of Functional Programming
, 1995
"... It 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 ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
It 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...
Translator-Based Multiparadigm Programming
- Journal of Systems and Software
, 1993
"... Better programming productivity may be obtained by choosing suitable programming paradigms. For development of complex software systems, multiparadigm programming would usually be appropriate. However, its use may be hindered by a lack of languages and programming support tools. As this paper argues ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
Better programming productivity may be obtained by choosing suitable programming paradigms. For development of complex software systems, multiparadigm programming would usually be appropriate. However, its use may be hindered by a lack of languages and programming support tools. As this paper argues, multiparadigm programming may be supported by translators that convert programs written in one language to another language based on a different paradigm. Keywords and Key Phrases: Programming Paradigm, Multiparadigm Programming, Object-Oriented Programming. 1
A Fresh Look at Combinator Graph Reduction (Or, Having a TIGRE by the Tail)
- SIGPLAN Notices
, 1989
"... We present a new abstract machine for graph reduction called TIGRE. Benchmark results show that TIGRE's ex- ecution speed compares quite favorably with previous combinator -graph reduction techniques on similar hardware. Furthermore, the mapping of TIGRE onto conventional hardware is simple and effi ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
We present a new abstract machine for graph reduction called TIGRE. Benchmark results show that TIGRE's ex- ecution speed compares quite favorably with previous combinator -graph reduction techniques on similar hardware. Furthermore, the mapping of TIGRE onto conventional hardware is simple and efficient. Mainframe implementations of TIGRE provide performance levels exceeding those previously available on custom graph reduction hardware.
TIP in Haskell - another exercise in functional programming
- Proc. Glasgow Workshop on Functional Programming 1991
, 1991
"... Requests and Responses Working from the C-TIP routine headers of Figure 1, it is a straightforward exercise to write most of the corresponding definitions of TipRequest and TipResponse shown in Figure 2. The introduction of the type YX for screen co-ordinates is perhaps the most immediately appare ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
Requests and Responses Working from the C-TIP routine headers of Figure 1, it is a straightforward exercise to write most of the corresponding definitions of TipRequest and TipResponse shown in Figure 2. The introduction of the type YX for screen co-ordinates is perhaps the most immediately apparent change, but other less obvious changes are more significant. The new relationship of function and argument between TIP and the application means, first, that there is no need for requests Tstart or Tstop: tip simply wraps the evaluation of its argument in an appropriate context. Secondly, data TipRequest = data TipResponse = Tbell Tkey Char --- Tbox YX YX --- Tres Response --- Tnobox YX YX --- Tvoid --- Ttitle String YX YX --- Tyx YX --- Tclear --- Tmove YX --- Trelmove YX --- Tprintf YX Int String [String] --- Tputc Char --- Tputs String --- Tread --- Trefresh type YX = (Int,Int) --- Treq Request --- Tmax --- Tpos Figure 2: Level 1 H-TIP Interface. since tip controls all I/O on behalf...
Haxcel: A Spreadsheet Interface to Haskell
- Pages 206–222 of: 14th Int. Workshop on the Implementation of Functional Languages
, 2002
"... Abstract. The spreadsheet paradigm offers a fast interactive loop, where the effects of updates to definitions and data are immediately visible. This makes the paradigm attractive for program development, where redefinitions can be immediately tested and the results displayed. We have designed a sim ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
Abstract. The spreadsheet paradigm offers a fast interactive loop, where the effects of updates to definitions and data are immediately visible. This makes the paradigm attractive for program development, where redefinitions can be immediately tested and the results displayed. We have designed a simple, compilerindependent spreadsheet interface to Haskell, where cells host Haskell definitions. Spreadsheets are also used for high-level array calculations. In order to meet that demand we have designed and implemented an extended array library for Haskell, which provides a number of typical array-language facilities. Together, the interface and the array library provide an interactive environment that can be used both for development of general Haskell code and for array-oriented spreadsheet calculations.
Within ARM's Reach: Compilation of Left-Linear Rewrite Systems via Minimal Rewrite Systems
, 1997
"... A new compilation technique for left-linear term rewriting systems is presented, where rewrite rules are transformed into so-called minimal rewrite rules. These minimal rules have such a simple form that they can be viewed as instructions for an abstract rewriting machine (ARM). ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
A new compilation technique for left-linear term rewriting systems is presented, where rewrite rules are transformed into so-called minimal rewrite rules. These minimal rules have such a simple form that they can be viewed as instructions for an abstract rewriting machine (ARM).
The Compilation of SL, a Set-Based Logic Language for Generic Parallel Architectures
- Journal of Programming Languages
, 1997
"... Set-based languages have emerged as a powerful means for expressing not only programs but also requirements, test cases and so on. However, a uniform compilation schema for sets has not yet been completely developed. The present paper tries to overcome this lack using a set-based logic language, SL ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Set-based languages have emerged as a powerful means for expressing not only programs but also requirements, test cases and so on. However, a uniform compilation schema for sets has not yet been completely developed. The present paper tries to overcome this lack using a set-based logic language, SL (set language), as target. The approach is based on an imperative abstract machine, the SAM (set abstract machine). The translation from SL to SAL (SAM assembly language) is described and all the possible optimizations, both at source code level and at assembly code level, are detailed. The potentials for identifying parallel flows of computations are analysed. Several examples of compilations are presented and discussed.
Lazy Imperative Languages - Report on a Project to Examine the Use of Lazy Evaluation in Imperative Languages
, 1995
"... control structures................................................................. 3 3.2. Lazy data structures .......................................................................................... 4 3.2.1. Non-strict CONS cells .................................................................. ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
control structures................................................................. 3 3.2. Lazy data structures .......................................................................................... 4 3.2.1. Non-strict CONS cells ....................................................................... 4 3.2.2. Streams ............................................................................................. 5 4. Why lazy evaluation is not implemented in imperative languages ....................................... 8 4.1. Referential transparency.................................................................................... 9 4.2. Implementation ................................................................................................. 9 5. The signal processing model in an imperative language...................................................... 10 5.1. Code framework................................................................................................ 11 5.2....

