GitXplorerGitXplorer
R

FPSheet

public
95 stars
3 forks
0 issues

Commits

List of commits on branch master.
Verified
b32269ac62bc9eb0df067ee58dd0a9c892c44ae5

Update README.md

RRKlompUU committed 5 years ago
Unverified
5d944d794fe270c2505f8c33be9dbc38c0c69247

remove half working FPSheetStd (only worked when starting FPSheet-exe

RRKlompUU committed 5 years ago
Unverified
733684ac0425aac1c99ebf5d10f91ded3fc24518

bugfix: prettyprint preprocessed expr without respecting line length max

RRKlompUU committed 5 years ago
Unverified
e7ff96a4aaa7f56c02b1c9a3539851f1470a0c9e

update README

RRKlompUU committed 5 years ago
Unverified
a7f8d1d41094ebee863adef30c0898bfac403b9d

dead code removal

RRKlompUU committed 5 years ago
Unverified
481b138a7f1b7eba634c7a462861e35797a44d67

reval implementation with revalCell definition

RRKlompUU committed 5 years ago

README

The README file for this repository.

FPSheet

A Spreadsheet program with Haskell as the scripting language

The prototype was written in C, it can be tried out in the c-prototype branch. I am currently rewriting the tool in Haskell, which I am doing in this master branch.

Alt text

FPSheet is a spreadsheet program, where the scripting language for computing cell's values from formulas runs Haskell internally. This arguably provides a more uniform experience than what is provided by the scripting languages of standard spreadsheet programs. Note: this README currently assumes some familiarity from the reader with ghc's ghci tool.

The tool maintains a Haskell Interpreter session in the background. When a cell is defined or edited, a unique variable is defined or redefined inside this session. For example, if cell abd124 is edited to: "45", FPSheet sends the following to the interpreter session: "let abd124 = 45". Similarly, if cell a4 is edited to: "a5 * 10", FPSheet sends the following to the ghci session: "let a4 = a5 * 10".

Interestingly, since Haskell is lazily evaluated, and since Haskell regards function values as first class citizens, functions can be defined by cells. Any other cell can then apply these functions simply by referring to cells.

Installation

Run: stack install

Usage

Run: stack exec FPSheet-exe

The program has vim-like modes:

  • normal mode for moving around
  • edit mode for editing the definition of a cell

While in normal mode, press:

  • :q to exit.
  • :w <filename> to write the sheet to disk
  • :r <filename> to read a sheet from disk
  • :i <filename> to import an .xlsx file (imports from cell values)
  • :I <filename> to import an .xlsx file (imports from cell formulas if set, falls back to cell values for cells that do not have a formula definition set)
  • :<column><row> to jump to column,row (e.g. a10, azzz4050, etc.)
  • <ESCAPE> to interrupt the ghci backend (useful for when you accidentally defined a cell that cannot finish evaluation)

TODOs

  • Fix known issue: the haskell interpreter that is currently used does not appear to support polymorphic definitions.
  • We now have [a1..a10], [a1..e1], [a1..e10], [a1..], similar ranges not yet supported are:
    • [a1,b1..]
    • [a1,a4..]
    • [a1,a4..a10]
  • Copy pasting cells (properly handling loose and stuck cell references)
  • Exporting to excell savefiles
  • Undo & redo