top | item 30976038

(no title)

InflexHQ | 3 years ago

I’m trying my best to create such a product. What you’re describing is something that (1) amateur spreadsheeters can use, (2) the power users, and (3) programmers, will be able to use and not feel out of their depth or patronized. I personally think that given that Excel is a pure-ish declarative language, then building on a declarative language that programmers use is a solid attack on this, which is why I’ve chosen pure functional programming as a basis for my work. It’s been an enjoyable design process to include or throw out ideas that would alienate either end of the spectrum.

Elsewhere: Making all cells CAS gives you a strong foundation for version control, modularity, resizability and share-ability.

Happy to share more thoughts on this. I’m two years into the process.

discuss

order

rco8786|3 years ago

Would love to hear more

InflexHQ|3 years ago

I realized I left that open ended but I’ll touch on a few points that I think are relevant here;

* There’s a language which is like Haskell/Elm/PureScript in terms of being purely functional and statically typed. But with syntax that looks more like Excel.

* Purity gets us fearless recalculation.

* Static types let us build UI elements automatically based on the inferred types of code.

* It’s content-addressable like Unison. That means every expression and “cell” has a unique SHA512 hash of it which refers to only that expression.

* Content addressability makes cache invalidation of results trivial.

* It also makes it easy to say “I want exactly this version of that person’s cell and for all time.” Makes it impossible to break someone else’s code once it’s working.

* It also lets you fearlessly federate, if ever needed.

* Content addressed also means you can write tests against code and have them run on every change. Only the tests whose dependencies changed will be rerun. That’s not normal in Python or Haskell, but in a spreadsheet it is.

There are other design choices related to your comment but I don’t want to ramble on.