this post was submitted on 03 Nov 2022
21 points (100.0% liked)

General Programming Discussion

7796 readers
5 users here now

A general programming discussion community.

Rules:

  1. Be civil.
  2. Please start discussions that spark conversation

Other communities

Systems

Functional Programming

Also related

founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] yogthos@lemmy.ml 2 points 2 years ago (4 children)

There is nothing stopping you from making an impure function, but the language naturally guides you towards writing code that's composed of a bunch of functions that transform data. Clojure also has explicit containers for mutable data and those have their own semantics, so you can't accidentally cause mutation.

It's also worth distinguishing between different kinds of side effects. One type of effects is doing things like logging, which in my experience are generally harmless. The type of side effects that I tend to worry about are the ones that couple functions together via mutable references.

And yeah, Typed Clojure library lets you do gradual typing, but it hasn't really caught on with the community so far. Most people prefer using runtime contracts with Spec and Malli.

[–] bbarker@lemmy.ml 2 points 2 years ago (3 children)

and 96% of it is pure functions

Thanks - I was just wondering how this somewhat precise statistic was obtained.

Otherwise, all that makes sense generally, though I tend to model logging as an effect in statically typed languages with effect systems. But I agree that it isn't the most important thing!

[–] yogthos@lemmy.ml 3 points 2 years ago (2 children)

I'm not sure how the statistic for Pedestal was obtained, don't recall if the talk mentions it or not. There are static analysis tools for Clojure like clj-kondo that can provide these kinds of insights. You could see what parts of the code are pure based on what functions get called for example.

[–] bbarker@lemmy.ml 2 points 2 years ago (1 children)

Sorry - I didn't realize your original link was to the video and not the project. After watching it (good talk!), I found the clip in question. It seems like he is just saying that 96% of the codebase is functions (of any sort), not that 96% of the functions in the code are pure.

[–] yogthos@lemmy.ml 0 points 2 years ago

OK yeah, I misremembered the exact phrasing. You're right he doesn't say the functions are pure necessarily.