noli

joined 1 year ago
[–] noli@programming.dev 2 points 5 months ago

While you do have a fair point, I was referring to the case where one is basically implementing a map operation as a for loop.

[–] noli@programming.dev 3 points 5 months ago (2 children)

Technically this is also possible with for loops, like with OpenMP

[–] noli@programming.dev 22 points 5 months ago

Compiler optimizations like function inlining are your friend.

Especially in functional languages, there are a lot of tricks a compiler can use to output more efficient code due to not needing to worry about possible side effects.

Also, in a lot of cases the performance difference does not matter.

[–] noli@programming.dev 5 points 5 months ago (7 children)

Why? Cause shops are open on sunday? Having no workers rights makes that a lot easier

[–] noli@programming.dev 10 points 6 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)
[–] noli@programming.dev 42 points 6 months ago (2 children)

Dogmatic statements like this lead to bad, messy code. I'm a firm believer that you should use whatever style fits the problem most.

Although I agree most code would be better if people followed this dogma, sometimes mutability is just more clean/idiomatic/efficient/...

[–] noli@programming.dev 32 points 6 months ago (6 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.

[–] noli@programming.dev 1 points 6 months ago* (last edited 6 months ago) (1 children)

Yuki had been on kmag's arse for 10+ laps without passing. Daniel just closed a 9 second gap to the two. Yuki was never passing. Daniel might've.

It's easy to say after the fact "bUt hE DidN'T PaSS hiM DiD hE?", but u gotta look from the perspective from the race engineers. Who is most likely to get a pass: the guy who's been trying and failing for 10 laps or the other guy who just closed a 9 second gap and is on a different strategy? Yuki just let his ego cloud his judgement, which is understandable in the heat of the moment but not in a dangerous "revenge" action 15 minutes later. IMO he should get at least a fine for that move after the checkered flag if not a time penalty. What he did was stupid and dangerous

[–] noli@programming.dev -1 points 7 months ago (3 children)

He had a bigger tyre advantage and thus at that point in time more pace than yuki

[–] noli@programming.dev 3 points 7 months ago

I finally quit and started playing overwatch2 instead. Same amount of salt/toxicity!

[–] noli@programming.dev 10 points 7 months ago

Reed hucks = redux Heather net = ethernet

[–] noli@programming.dev 27 points 7 months ago (4 children)

You clearly don't use this one, don't you know lemmy instances automatically censor your ********?

 
view more: next ›