GitXplorerGitXplorer
R

FPSheet

public
95 stars
3 forks
0 issues

Commits

List of commits on branch master.
Unverified
b0692ea67b0d6a69f4ec1c8e1cc472e385b68200

plots: with labels

RRKlompUU committed 4 years ago
Unverified
126fd18fcb4a7b15776f4e1eafcfa36b80664f33

plots inside the interpreter

RRKlompUU committed 4 years ago
Unverified
8b5e9857631a973319f309d6cd9658942c1534d0

added ':e ..' cell definition -> enables language extensions

RRKlompUU committed 4 years ago
Unverified
c6bff328a13ae1441afb93e648cf8ccee4839e35

Enable loading custom modules (with ":l Module.hs") as cell definition

RRKlompUU committed 4 years ago
Unverified
a8886e433dc7d87bc432867dff2fa61b053f6129

remember save file

RRKlompUU committed 4 years ago
Unverified
10f836bfcf13f85286540bab5bee4a6a247f4c31

Added special commands through cell definitions: import Module, and run

RRKlompUU committed 4 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