All Projects → RKlompUU → Fpsheet

RKlompUU / Fpsheet

Licence: other
FPSheet: A Spreadsheet program with Haskell as the scripting language

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Fpsheet

Functional Data Grid
Data grids in functional style with ReactJS
Stars: ✭ 125 (+45.35%)
Mutual labels:  spreadsheet, functional-programming
Zio Query
Add efficient pipelining, batching, and caching to any data source
Stars: ✭ 84 (-2.33%)
Mutual labels:  functional-programming
Scalaz Plugin
A compiler plugin that will improve on the scala compiler on the assumption that the user is using the Scalazzi-safe subset of Scala.
Stars: ✭ 76 (-11.63%)
Mutual labels:  functional-programming
Aardvark.rendering
The dependency-aware, high-performance aardvark rendering engine. This repo is part of aardvark - an open-source platform for visual computing, real-time graphics and visualization.
Stars: ✭ 79 (-8.14%)
Mutual labels:  functional-programming
Desafios
FP Challenges
Stars: ✭ 77 (-10.47%)
Mutual labels:  functional-programming
Request Compose
Composable HTTP Client
Stars: ✭ 80 (-6.98%)
Mutual labels:  functional-programming
Lila
♞ lichess.org: the forever free, adless and open source chess server ♞
Stars: ✭ 10,315 (+11894.19%)
Mutual labels:  functional-programming
Bulb
A reactive programming library for JavaScript.
Stars: ✭ 84 (-2.33%)
Mutual labels:  functional-programming
Functionalrx2
FunctionalRx2 is a collection of constructs to simplify a functional programming approach to Java and Android [STABLE]
Stars: ✭ 83 (-3.49%)
Mutual labels:  functional-programming
Idiolisp
A statically typed functional programming language
Stars: ✭ 78 (-9.3%)
Mutual labels:  functional-programming
Goat
Annotate Images (or goats) On The Web™
Stars: ✭ 78 (-9.3%)
Mutual labels:  functional-programming
Poi Android
📈 Apache POI for Android
Stars: ✭ 77 (-10.47%)
Mutual labels:  spreadsheet
Omnia
Stars: ✭ 81 (-5.81%)
Mutual labels:  functional-programming
Incompose
A inferno utility belt for function components and higher-order components
Stars: ✭ 76 (-11.63%)
Mutual labels:  functional-programming
Taelinarena
[outdated] A moddable MOBA in Formality
Stars: ✭ 84 (-2.33%)
Mutual labels:  functional-programming
Pfun
Functional, composable, asynchronous, type-safe Python.
Stars: ✭ 75 (-12.79%)
Mutual labels:  functional-programming
Lux
The Lux Programming Language
Stars: ✭ 1,211 (+1308.14%)
Mutual labels:  functional-programming
Monix Bio
Asynchronous data type with typed errors.
Stars: ✭ 80 (-6.98%)
Mutual labels:  functional-programming
Imtools
Fast and memory-efficient immutable collections and helper data structures
Stars: ✭ 85 (-1.16%)
Mutual labels:  functional-programming
Dash
Functional programming library for PHP. Inspired by Underscore, Lodash, and Ramda.
Stars: ✭ 84 (-2.33%)
Mutual labels:  functional-programming

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].