高階関数を書いたら、中級者になれた気がした。を批判したら上級者になれた気がした。をありがたく拝読した。

元記事

高階関数を書いたら、中級者になれた気がした。

批判記事

高階関数を書いたら、中級者になれた気がした。を批判したら上級者になれた気がした。

休日ワイ

ワイ「おっ」
ワイ「ワイの記事に対して批判記事を書いてくださっている方がおるやんけ」
ワイ「ありがたいこっちゃ」
ワイ「いっちょ学ばせてもらおか!」

音読完了

ワイ「なるほどな〜」
ワイ「大変勉強になったわ」
ワイ「必読の記事やな!」

しかし気になることが

ワイ「ん?」
ワイ「なんやこのコード?」

const mapArray=callback=>
    array=>{
        for(let i=0;i<array.length;i++)
            array[i]=callback(array[i]);
        return array;
    };

const doubleArray=mapArray(x=>x*2);

const tenMinusArray=mapArray(x=>x-10);

console.log(doubleArray([1,2,3,4]))
console.log(tenMinusArray([10,20,30,40]))

ワイ「JavaScriptの配列には元々mapメソッドがあるから」

console.log([1,2,3,4].map(x => x * 2))
console.log([10,20,30,40].map(x => x - 10))

ワイ「↑この2行だけで済むのに」
ワイ「なんで16行もコード書いてんねやろ?」
ワイ「mapArraydoubleArraytenMinusArrayも無駄ですやん」
ワイ「もしもワイがこんなコードを書いたなら・・・」

ワイ「うわ!10行以上も無駄なコード書いてもうた!」
ワイ「しかも高階関数の記事なのに、mapという高階関数を再発明してもうた!」

ワイ「って後悔してしまうなぁ・・・」

もしかして

ワイ「あっ!?」
ワイ「分かったで!」
ワイ「書いたことを後悔するような関数をわざと書いて」
ワイ「後悔関数高階関数を掛けていらっしゃるんや!」
ワイ「いやー、ギャグセンスが高過ぎてかなわんわ!」
ワイ「ん、なになに?」
ワイ「このコードの説明が書いてあるで」

カリー化と部分適用を使ってさらに綺麗に美しく書くことができる。

ワイ「確かに綺麗や」
ワイ「美しいくらい見事なボケやわ!」
ワイ「全体的に学びも多いし、素晴らしい記事やし」
ワイ「さすが上級者や!」

〜おしまい〜

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
コメント
この記事にコメントはありません。
あなたもコメントしてみませんか :)
すでにアカウントを持っている方は
ユーザーは見つかりませんでした