Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The problem with Datalog, and Clojure in general are the licenses. Terrible licenses.

Everything is about Rich Hickey. Apache 1.0.

Now that Nubank basically owns it and there's very little progress or activity as of late, I don't see why one would chose to use Clojure, Datalog etc.

Also, a lot of functional programming concepts has been since added to big programming languages like Javascript and hell, even Java has lambdas now.

I'm guessing that also hardcore FP people have moved on to Haskell. The ones that like LISP to Racket... and only people tied to the JVM in legacy projects are with Clojure.



> very little progress or activity as of late

There's been equally frequent releases and updates, I'm not sure how you came to this conclusion?

The best I can think of is that you're confusing core language updates with other tech. Clojure is structured differently than other languages, and core language/library updates are (and always have been) relatively rare while the surrounding ecosystem/tooling provided by the Clojure team is active.


Quick reminder that Clojure is available on the JVM, CLR, Node, browsers, stand-alone interpreter (Babashka), on the Erlang VM and there's a C++ impl. that is being worked on actively.


What are the licensing issues with First-order Horn clause logic?

Datalog is not a licensed product or software, the same way Answer Set Programming isn't.


XTDB is MIT and has clients for Java or HTTP if you don't want to write Clojure. Not every Datalog implementation is 'about Rich Hickey'


> Also, a lot of functional programming concepts has been since added to big programming languages like Javascript and hell, even Java has lambdas now.

JavaScript was "functional" since the beginning. It always had statically scoped first class closures.

But as you say, that's not very special anymore...

If you want to do primarily FP with a data oriented touch you want stuff like:

- immutable, persistent data structures

- a comprehensive library around transforming these

- expression based syntax

- idiomatic (functional style code) performance is good

- a comprehensive library around manipulating, composing and transforming functions

- more stuff that I'm forgetting right now

Clojure gives you all of that and _more_, such as a powerful REPL, macros, multiple dispatch, spec instrumentation, proper namespaces, ...

Personally I write JS in a very straight forward, functional style. But the differences is still night and day in many dimensions. There are fundamental issues with the language that are unfortunately unfixable. Just having first class function objects isn't cutting it.


> and only people tied to the JVM in legacy projects are with Clojure.

You say this as if it's not an absolutely massive body of programmers. A lot of large companies are institutionally committed to JVM, and clojure has settled into a niche as the language teams within them use when they don't want to use java.

I expect there are more people working on projects that fit that description than there are ones working in racket and haskell combined.


Saying that Java has lambdas is vague:

it's like confessing one doesn't know what a Lisp lambda implies, in particular creation of closures to capture free variables, since Java creates a copy of free variable values, rather than inform the code generator as to allocation of said free variables, in order to honor the closure-extended lifetimes from stack allocation to heap allocation (for example).


Datalog != Datomic.

Datomic ∈ Datalog


It's true that this SPARQL-inspired view of Datalog as a triplestore query language is quite a narrow interpretation compared to something closer to the academic Prolog roots like https://souffle-lang.github.io/ - what do you feel are the most important differences?


Disclaimer: I'm not a Datalog expert. I do work for a company that makes a relational graph knowledge management system (RelationalAI), that has some Datalog-type aspects, but I only dabble at the front-end/query-language end of that; I work on the storage layer. I've also never used Datomic or its offshoots. Yes from what I understand, Datomic works only with binary relations. Classic Datalog can work with full n-ary relations. (However any n-ary relation can be thought of, or logically recomposed, as a series of binary relations anyways, and vice-versa)

Syntax also clearly is not the Prolog-ish syntax of Datalog "proper."

But my point above is, Datomic is but one product and implementation of these concepts. It's a wrong take to make a statement like "The problem with Datalog, and Clojure in general are the licenses"; there is a field of many products, all with multiple licenses, and also weird to make this "Clojure" swipe, when there's only tangential connection between "Datalog" and "Clojure" based on one product (and its offshoots).


Thanks for the insights and clarifications - I agree with all that completely :)

I mainly responded because "Datomic ∈ Datalog" is worthy of discussion in itself ...but I now realise this is probably the wrong subthread for that.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: