off-topic

https://github.com/clojurians/community-development/blob/master/Code-of-Conduct.md Clojurians Slack Community Code of Conduct. Searchable message archives are at https://clojurians-log.clojureverse.org/
blak3mill3r 2021-01-22T00:14:57.048200Z

EN-715812: Eliminate all the old Jira tasks which we're never going to do

seancorfield 2021-01-22T00:32:14.048400Z

Heh, I regularly prune our backlog and hassle the product manager about tickets that look like we'll never get to them. I don't like to see more than 100 tickets in the backlog.

2021-01-22T04:06:13.049800Z

Ad equality: yes, we certainly need one afaics and it cannot be in-language as long as we want to be able to consider side effects, otherwise nil would be equivalent to (println "x") and ((defn p [] 3)) would be equivalent to 3. As to your last point: that is because as I see now we use two very different definitions of substitution invariance (or R.T.) of an expression -- one defined in terms of substituting "equals for equals" (expressions with expressions or expressions with their values?) inside the expression, the other via substituting the expression itself by its value. Afaics both interpretations occur¹² but surely will not be equivalent. I reckon fwif it's at least clear that side effects seldom make things easier, not even talking about their absence 🙂 ¹ https://en.wikipedia.org/wiki/Talk:Referential_transparency#Incorrect_definition ² Whole thread at https://www.reddit.com/r/haskell/comments/xgq27/uday_reddy_sharpens_up_referential_transparency/c5mbuzk/

2021-01-22T04:37:43.050900Z

My next takeaway from this shall be that said concepts are useful to think about and tinker with structure and interpretation of PLs (pun intended), but less useful for communicating using those concepts relying on any kind of preexisting precise common notion behind them -- sorry, OP 🙂

jaihindhreddy 2021-01-22T06:02:25.051300Z

Me too!!! QBasic's Sound and Play (at age 10) is when I knew I wanted to make software as a grown up.

Chase 2021-01-22T15:46:39.056Z

My recommendation as a beginner who tried and struggled a lot when making Clojure my first language is to take an actual course like Harvard's CS50, HTDP, or SICP and then come back to Clojure. That Harvard course taught me more in 6 months than the previous year and a half floundering out on my own.

1➕
Chase 2021-01-22T15:48:03.057600Z

It is also considered the prerequisite to Harvard's Web Dev course which I am now taking (while doing Jacek Shae's excellent Clojure courses and reading Web Development in Clojure) if that is where they want to focus. I am making so much more progress after completing that structured intro course.

1👍
2021-01-22T17:38:30.058700Z

It certainly seems to be the case that many people use the term "referential transparency" in the context of programming languages in very different ways from each other. "pure function" seems to have less variability in how it is used.

2021-01-22T17:40:09.058900Z

And from several things I have read about the earliest uses of "referential transparency" in the context of programming language semantics, it is perfectly possible to define "referential transparency" and semantics of a language like C/C++ such that in the context of those semantics, C/C++ have that referential transparency property.

Max 2021-01-22T22:06:57.059800Z

I keep staring at this and can’t quite wrap my head around it. How does threading the forms in reverse order not result in the forms getting executed in reverse order?

sova-soars-the-sora 2021-01-22T23:26:33.060Z

sweet

2021-01-22T23:31:55.060200Z

Yes, looking into common usage(s) of R.T. had been a fun and interesting excursion into what seems to be a can of worms -- I think the stackoverflow thread, which I found to be far more amusing than helpful, is a good reflection of that. As to the term pure, I think most definitions I've seen are a combination of «free of side effects» and «mathematical function of its arguments» -- would you be aware of other properties the last two might not capture?