Essenzialmente, un foglio di calcolo è un linguaggio funzionale con digitazione dinamica e ogni funzione o valore può essere referenziato come una cella nella matrice.
Invece di cose come (defn some-name ...)
la parte some-name
viene inserita in una cella stessa.
Se si passa a un ide del linguaggio funzionale che si aggiorna in modo dinamico (come lighttable per clojure), si vedrà la stessa funzionalità di un foglio di calcolo. Associare un valore a un nome, scrivere una funzione che utilizza quel valore, modificare il valore e l'output della funzione cambia immediatamente. È come fare qualcosa come scrivere =A1 + B2
nel percorso di C3
in excel.
Quindi, i programmatori funzionali spesso amano scrivere fogli di calcolo come programmi giocattolo ... e anche i documenti di ricerca. (Sì, mi dispiace, sono tutti dietro un paywall ACM.org)
-
Programmazione funzionale del foglio di lavoro
The functional programming community has shown some interest in spreadsheets, but surprisingly no one seems to have considered making a standard spreadsheet, such as Excel, work with a standard functional programming language, such as Haskell. In this paper, we show one way that this can be done. Our hope is that by doing so, we might get spreadsheet programmers to give functional programming a try.
-
Forms / 3: Un linguaggio visivo di primo ordine per esplorare i confini del paradigma del foglio di lavoro
Although detractors of functional programming sometimes claim that functional programming is too difficult or counter-intuitive 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. In this paper, we discuss language features that eliminate several of these limitations without deviating from the first-order, declarative evaluation model.
-
Implementazione di fogli di calcolo delle funzioni
A large amount of end-user development is done with spreadsheets. The spreadsheet metaphor is attractive because it is visual and accommodates interactive experimentation, but as observed by Peyton Jones, Blackwell and Burnett, the spreadsheet metaphor does not admit even the most basic abstraction: that of turning an expression into a named function. Hence they proposed a way to define a function in terms of a worksheet with designated input and output cells; we shall call it a function sheet.
L'inizio di Foglio di calcolo su Wikipedia fornisce alcuni suggerimenti su come implementarlo:
A spreadsheet is an interactive computer application program for organization and analysis of data in tabular form. Spreadsheets developed as computerized simulations of paper accounting worksheets. The program operates on data represented as cells of an array, organized in rows and columns. Each cell of the array is a model–view–controller element that can contain either numeric or text data, or the results of formulas that automatically calculate and display a value based on the contents of other cells.
Basandosi su questo Schema del paradigma Model-View-Controller come espresso nelle librerie Java . L'autore continua a menzionare le applet (un po 'datate, è stato scritto nel '93 -'96) e menziona la sua pagina web che va a link (sì, applet) per il corrispondente codice del foglio di calcolo link
Sottolineerò che l'intero foglio di calcolo non è così grande in questa 570 righe di applet, inclusa la documentazione.
Detto questo, a seconda della lingua, probabilmente potresti fare tutto con solo i puntatori di funzione in una matrice sparsa.