this post was submitted on 21 Mar 2024
296 points (94.8% liked)

Programmer Humor

19652 readers
1595 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] noli 32 points 8 months ago (2 children)

In functional programming, everything is seen as a mathematical function, which means for a given input there is a given output and there can be no side effects. Changing a variable's value is considered a side effect and is thus not possible in pure functional programming. To work around this, you typically see a lot of recursive and higher order functions.

Declaring all values as const values is something you would do if you're a diehard functional programmer, as you won't mutate any values anyway.

[–] [email protected] 4 points 8 months ago

thanks, kinda understand

[–] Mir 2 points 8 months ago (2 children)

What is the best practice then when you want to update a variable's value?

[–] noli 10 points 8 months ago (2 children)

Depends on how deep down the rabbit hole you want to go :p

  • creating a new variable that contains the updated value
  • recursion (e.g. it's not possible to make a loop that increments i by 1, but it is possible to turn that loop into a function which calls itself with i+1 as argument)
  • avoiding typical types of operations that would update variable values. For example instead of a for loop that updates every element of a list, a functional programmer will use the map function, which takes a list and a function to apply to each element of that list to create an updated list. There's several more of these very typical functions that are very powerful once you get used to using them.
  • monads (I'm not even gonna try to explain them as I hardly grasp them myself)
[–] [email protected] 4 points 8 months ago

You just dropped a mind bomb on me. Suddenly things make sense :o

[–] [email protected] 3 points 8 months ago

A monad is just a monoid in the category of endofunctors, what's the problem?

[–] [email protected] 1 points 8 months ago

j = i + something