[HN Gopher] Relic: Functional relational programming for Clojure... ___________________________________________________________________ Relic: Functional relational programming for Clojure(Script) Author : zonotope Score : 97 points Date : 2023-02-26 20:03 UTC (2 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | Rodeoclash wrote: | Clojure(script) always seems to me to be this hotbed of | interesting ideas in programming. I.e. you'll see something wild | like this start here then eventually the concepts make their way | out into regular JavaScript. | | I'm almost starting to regret not picking Clojurescript for my | app | wotbrew wrote: | A big part of the curse of lisp is that anything feels | possible. Even for one guy who works at a veg shop. | nextos wrote: | While I love Clojure, these ideas already existed in other | languages. For example, Mozart/Oz basically integrates all | major paradigms [1]. | | It's a bit of a tragedy it has been mostly abandoned. I wish a | Lisp, such as Clojure, emulated Mozart/Oz semantics. | | [1] https://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf | gsinclair wrote: | Link looks great; thank you. | cloogshicer wrote: | Holy crap, that figure 2, showing all the programming | paradigms and how they relate to each other is incredible. | nextos wrote: | The extended version of this is the book _Concepts, | Techniques, and Models of Computer Programming_ [1], which | is just incredibly good. | | There's also a summary poster [2]. | | Actually, CTM was in Rich Hickey's reading list when he | designed Clojure [3]. | | [1] https://www.info.ucl.ac.be/~pvr/book.html | | [2] | https://www.info.ucl.ac.be/~pvr/paradigmsDIAGRAMeng201.pdf | | [3] https://www.goodreads.com/list/show/137472.Rich_Hickey_ | s_Clo... | cloogshicer wrote: | Thank you for the recommendation! | Scarbutt wrote: | I guess sqlite + honeysql would be alternative. Curious to know | why the author prefers the relations/table/codd model over graph- | map-databases like datomic and thinks something like datomic | "feels out" of "out of the tarpit". | sesm wrote: | I like how the typical JS-library-style README is put separately | in a 'Pitch' section. | Funnyduck99 wrote: | I dont like clojure | ballpark wrote: | Funnyduck99 is probably mocking all the people that go into HN | posts about Clojure to complain about how their team of non- | Clojure programmers went to work on a Clojure project and it | was a bad experience. | Funnyduck99 wrote: | No I genuinely don't like clojure because I just finished my | first clojure class, it was also my first functional language | and it was online and i am bad at learning online so thats | why. | joelittlejohn wrote: | Dan recently recorded a session about Relic, if you'd like to | hear him speak more about the origins of the library, some design | choices, and some examples: | | https://youtube.com/watch?v=QsEJ5O2e4Es | wcerfgba wrote: | How are updates triggered, what's the mechanism? From the | examples it seems like you don't need to subscribe and provide a | function to be called when changes happen, but then how does it | work? | wotbrew wrote: | A relic db is a persistent data-structure [1]. Applying a | transaction with rel/transact gives you a new database, | rel/track-transact also returns the changes to relations you | have opted-in to change tracking (using rel/watch). | | [1] https://en.wikipedia.org/wiki/Persistent_data_structure | prettyStandard wrote: | This looks really interesting! As someone who has worked with | relational databases and Clojure in the past, I can definitely | see the appeal of a functional relational programming model. | | I like that relic provides support for declarative data | processing and declarative relational constraints. These are | areas that can be tricky to handle when working with traditional | relational databases, so it's great to see a library that | addresses these pain points. | | The ability to use relic with reactive programming is also a big | plus. I'm curious to see how this would work in practice, | particularly in the context of an interactive application. | | Overall, relic seems like a promising library for anyone looking | to work with normalized data in Clojure. I'll definitely be | giving it a try on my next project! ___________________________________________________________________ (page generated 2023-02-26 23:00 UTC)