DEV Community

Discussion on: Tell us what your top unpopular tech opinion is 😈

Collapse
 
craigmc08 profile image
Craig McIlwrath

I think strict functional programming in Javascript doesn't make sense. The lack of built-in currying and parentheses on function calls makes it awkward to write functional code. But, I think applying some ideas from it is useful. The most helpful thing I take from fp in Javascript is keeping functions as pure as possible. I don't mean not using for loops and mutability inside the function, but from the outside, nothing gets changed. Like returning a new array instead of modifying the one passed to it.

Collapse
 
ryansmith profile image
Ryan Smith

Yeah, I agree. Writing pure functions and making an explicit choice to introduce a side-effect is a good concept/practice to incorporate into any code. I also like the ideas of immutability and referential transparency, since those are widely applicable.

Thread Thread
 
v6 profile image
🦄N B🛡

referential transparency

Well, today I learned. "This set of functional expressions is referentially transparent" seems like yet another way of saying "this bit o' code has got no side effects," but with more syllables!

More syllables is always better.

Thread Thread
 
craigmc08 profile image
Craig McIlwrath

Referential transparency actually means that the reference of an object doesn't matter. Only the value is important. That basically means that even items in different places in memory that have the same value are considered the same.

Thread Thread
 
v6 profile image
🦄N B🛡 • Edited

Actually, according to Willard Quine[1], "a mode of containment φ is referentially transparent if, whenever an occurrence of a singular term t is purely referential in a term or sentence ψ(t), it is purely referential also in the containing term or sentence φ(ψ(t))," as in the following example:

(12) Ralph believes that the man in the brown hat is a spy.
(13) Ralph does not believe that the man seen at the beach is a spy.
The main in the blue hat = the man seen at the beach = Bernie Sanders
t = ‘the man in the blue hat’
ψ(t) = ‘the man in the blue hat is a spy’
ϕ(ψ(t)) = ‘Ralph believes that the man in the blue hat is a spy’.

I need to get more practice drawing lil tridents on whiteboards.

[1]Although ultimately, like many obtuse concepts in CS, we can safely blame Whitehead and Bertram.

Thread Thread
 
craigmc08 profile image
Craig McIlwrath

Hmm, well I was talking about referential transparency as it relates to functional programming, as opposed to logic, I guess. I hadn't seen that definition before, it's pretty interesting.