Hello Jason Knight,
Thank you for reading and your interesting feedbacks.
I'll try to give some answers.
excellent example of why "functional programming" is confusing, cryptic, and inefficient. => can you explain more ? what concepts are confusing for you ?
Particularly given how you've used .map to introduce the overhead of callbacks likely making the entire double routine take four to ten times longer than it should. => can you explain how this will be longer that it should ? Have you a concrete time performance ?
tab.map(x => x * 2) is like for(let i=0; i < tab.length;i++){ tab[i]= tab[i]*2;} => both transform the array. However, map version is more reusable because each time you need to iterate over an array, map is ready, you pass only your callback and that's what I explained on "Higher-Order Functions" section. Is like a refactor and an abstraction.
Going hand in hand with the variable-style function declaration for nothing, failure to leverage operators resulting in multiple reference accesses, etc, etc. => can you explain more, thanks ?
double3 vs map => focusing on "what to do" is more clear and concise than "how to do", like in mathematics, we have a single formula that resume all the behaviors. You will have a less code and the code intention is more clear and quickly reveled. As I said, High Order Functions are for reusing code like iterating over an array (DRY).
maybe => if you do a safe code and defensive programing, Maybe will be a familiar concept. We protect code against null exception like "if(var is defined) do / else / else". Maybe is a safe chaining way : if any a null is encountered I don't need to continue.
It is NOT good programming practice. => can you explain more ? Functional programming is about : short functions (like in mathematics), single responsibility, no global scoop, no shared memory or access, immutability, declarative and single formula, no side effects, reduce complexity by composing, reuse by High Order Functions (DRY). If our code can guarantee this, then we can easily unit test, isolate, predict and run functions in parallel like in Elixir/Erlang. Are these a bad practices ?