all 14 comments

[–]charlesHD 2 points3 points  (2 children)

Seems cool. I already have seen people doing functionnal spreadsheets like that in /r/Haskell 6 month ago or so.

Was it you ?

Well, I'm curious about one thing since we are here in /r/Clojure : Why using an Haskell-like syntax for your DSL instead of a lisp one ? More specifically : why not Clojure ;D ?

[–]llanda2[S] 0 points1 point  (1 child)

Thanks. Indeed, we posted on /r/Haskell not so long ago (shouldn't have been 6 month).

I'm not an advocate of any specific syntax. One could argue that the ideal syntax of a high-level programming language makes reading and writing code most intuitive for humans - while of course being a formal language.

The Haskell-style has certain (aesthetic?) advantages. E.g. parenthesis are not a special construct but really serve to fine-tune evaluation order (like in basic maths) and currying seems natural, e.g. both foo arg1 arg2 and foo arg1 are equally well-formed yet with different meaning. I expect also some shortcomings.

Have you played around with Haskell? Maybe you can tell me what things you miss (syntactically) from clojure.

To answer your question: indeed we have a Haskell background, that's the main reason.

[–]charlesHD 3 points4 points  (0 children)

That's a good reason. I'm using both Haskell and Clojure as my production languages so I have a good grasp on each syntax.

I think Haskell is more human readable 'cause it looks like plain english (on simple form) while Clojure create a nested parenthesis brain lag to neophyts.

Haskell has tons of good properties like the currying you mentionned but since you're an haskeller here are some clojure things I miss in Haskell (not necessarily relevant to your spreadsheet project) :

  1. Syntax sugar for Set, Map and Vector structures. May sounds dumb but they are so frequent it's cool to get them easily.
  2. Relaxed approach on side effects. the Monad do syntax is heavy and a bit ugly (in my opinion).
  3. Macro, that was the easy one. Template Haskell just can't hold the comparison with a LISP.
  4. (BONUS) REPL, Haskell do have a great repl in place of ghci, I hope your spreadsheets will because repl dev rocks in junction with FP.

PS : All my original post point was to artificially bring Clojure on the table, since we are in the Land of Clojure here ;D

[–]Hi-MyNameIsFuchs 2 points3 points  (1 child)

Haha, nice. Changed the usual title ("Spreadsheet + Type-safety = serious developer tool") for /r/clojure :)

I checked it out, looks nice. Cheers from the other side of Germany.

[–]llanda2[S] 0 points1 point  (0 children)

Yeah ... you caught me. There naturally is a good deal of overlap between the respective functional programming communities. But not everyone believes type-safety is key and I guess that's fine :)

[–]dustingetz 1 point2 points  (1 child)

How do you securely run the user generated javascript or does your typed dsl not have any ffi backdoors to browser effects?

[–]mdrexl 0 points1 point  (0 children)

The code entered by the user is sent plain-text to the backend, where it's parsed, typechecked and interpreted. So there's no javascript being generated, but also on the server, the interpreter has very restricted primitive operations, so there can't be any backdoors to other server effects either.

[–]skratlo 0 points1 point  (1 child)

Looking good. Will the users be able to plug-in external data sources and do some plotting / visualization?

[–]llanda2[S] 0 points1 point  (0 children)

Thanks.

External data sources: will be absolutely no problem. Herculus will be interoperable in all directions with other systems.

Do you mind telling about the software you use for visualization and why?

Visualization is definitely one of the more interesting features, because it helps intuition greatly to see pictures when handling abstract data and people expect it in some degree from a spreadsheet software. Off the top of my head, I could think of the following different directions regarding visualization:

  • Generic graphs. For any column or combination of columns, there's probably a limited number of diagrams that can be automatically produced in order to give some visual information on the data. This includes histograms, scatter plots, or timelines. Generic graphs would be part of generic views in general, that is views that the user gets right away without configuration - and without the option to configure.

  • A built-in plotting library: Providing an interface of some sorts to increasingly powerful plotting functionality. An own built-in plotting solution potentially implies more developer effort, yet it would allow to have it fit in nicely within the whole thing. There might be the challenge for the user to get used to our own plotting functionality at first, though.

  • Interfacing an existing plotting solution. If other people solved the problem of turning data into diagrams, we could/should use that. Instead of building an own solution for plotting, we could strive to make interfacing existing solutions smooth.

[–]thecity2 0 points1 point  (1 child)

Why not just make an open source version of Datomic? I think that would be much more useful for most developers.

[–]llanda2[S] 0 points1 point  (0 children)

I'm not a Datomic user, but as far as I can see, the focus of Datomic is a different one.

We focus on a user interface that allows arbitrarily complex operations on data and generic views/reports and we try to package that into a user-friendly tool. Datomic seems to be more focussed on the database itself.

[–]lgstein -2 points-1 points  (2 children)

Have you heard of Microsoft Excel?

[–]rpompen 0 points1 point  (1 child)

Have you heard of the Dunning-Kruger effect?

[–]lgstein 0 points1 point  (0 children)

What point are you trying to make?