|
|
|
|
|
by bradrn
1544 days ago
|
|
I have in fact seen Inflex already! And I must admit to being quite surprised at seeing pretty much exactly the same UI I had imagined, already implemented. But I suspect there are still some major underlying differences between Inflex and what I’ve been doing. As a Haskeller, my emphasis has been very much on strong typing and associated language features: mine uses a Hindley–Milner variant with subtyping, allowing some information to be stored at the type level (e.g. units) and functions to be automatically broadcast to higher dimensions. The user can explicitly specify the type of each cell, allowing for more control over data modelling. Basically, I want to make a tool such that the user can create arbitrarily large spreadsheets, without running into the scalability problems of Excel etc. By contrast, Inflex seems to have a somewhat different and rather more minimal focus: simply making an easy-to-understand analogue of traditional spreadsheets which solves their biggest problems, without worrying about extraneous stuff. That being said, I will confess to not having tried Inflex all that much, so I may be misunderstanding it. I would be very interested in hearing your thoughts on this topic. |
|
You can annotate a cell’s expression with a type signature, though this is not explicitly mentioned or supported intentionally as I’m not decided fully on the syntax. Example: when you make a “table” via the Table button, it just makes a cell whose source code is: [] :: [{"column1":_, "column2":_}] as tables are just lists of records. If you go to https://inflex.io/try (work not saved, this page doesn’t hit the DB whatsoever) you can hit Formula to write code. But all cells are code underneath (hit the triangle).
My next addition to Inflex will be push-pull based FRP, for dealing with time, buttons and external events and outputs. I also plan on having it scale so that cells with large tables are refined into real database rows for more efficient operations. So the goal of Inflex is to embrace the small scale (lists and easy spreadsheet stuff) with a smooth migration path towards more advanced programming, in a coherent whole. But you have to start with the simple and work your way to the fancy stuff, or so I think.
I’ve considered units of measure, but they are complicated from an end-user perspective and complicate the type system, I’m not sure whether they’re worth it over providing very good automated property based testing. That’s an ongoing consideration.
Development is slow in my spare time which is limited, but I’m comfortable going at my own pace. I’d like to roll out a discourse forum to document things, but hosting is quite expensive. It’s worth resolving this, though, because I’m doing a poor job at explaining the product. One is always choosing between adding more polish/features and documenting!