質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • JavaScript

    15246questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Node.js

    1729questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • 関数型プログラミング

    26questions

    関数型プログラミングとは、関数を用いて演算子を構築し、算出し、コンピュータプログラムを構成する枠組みです。

今度こそこの書き方で合ってますか?

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 586
退会済みユーザー

退会済みユーザー

function pipe(...funcs) {
  return input => {
    return funcs.reduce((accumulator, func) => {
      return func(accumulator);
    }, input);
  };
}


function increment(value) {
  return value + 1;
}

function double(value) {
  return value * 2;
}

const incrementAndDouble = pipe(increment, double);
console.log(incrementAndDouble(3)); // 8


これだとpipe関数が返す関数の実引数が配列だった時に上手くいかないので、汎用的じゃないですよね。。。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2017/10/22 18:43

    削除依頼出しました ← なぜ?

    キャンセル

  • think49

    2017/10/22 22:07

    質問内容を表す具体的なタイトルに修正して頂けませんか。teratailは同じ質問に至った人が参考にする共有資産でもありますが、「今度こそこの書き方で合ってますか?」からは質問内容が読み取れません。

    キャンセル

  • think49

    2017/10/22 22:09

    kei344 さんが質問された "「合って無いコード」ってなんですか?" に対しても返答があると、質問内容がより具体的に伝わって良いと思います。

    キャンセル

回答 1

+3

 前質問

上記スレッドの質問者は退会していますが、前質問者も本スレッドの質問者である hayatomo さんのようです。

削除依頼出しました(涙)

他の方も指摘されているように、私も本質問に削除依頼を出す必要はないと思います。
前質問から本質問に至る流れが回答者に伝われば、問題ありません。

 回答

これだとpipe関数が返す関数の実引数が配列だった時に上手くいかないので、汎用的じゃないですよね。。。

そうでしょうか。
Function#apply やスプレッド要素を使えば、対応可能ですよ。

function pipe(...funcs) {
  return input => {
    return funcs.reduce((accumulator, func) => {
      return func(accumulator);
    }, input);
  };
}


function increment(value) {
  return value + 1;
}

function double(value) {
  return value * 2;
}

console.log(pipe(increment, double)(3));               // 8
console.log(pipe.apply(null, [increment, double])(3)); // 8
console.log(pipe(...[increment, double])(3));          // 8

jQuery() のように、引数の値によって処理を変える実装を私は好ましいとは思いません。
インターフェースはシンプルであるべきだと考えます。
その方がAPIの習得が容易です。

Re: hayatomo さん

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/22 22:44

    ご回答ありがとうございます。「pipe関数が返す関数の実引数が配列だった時に」とありますように、pipe関数の実引数が配列であった場合ではなくて、pipe関数が返す関数の実引数が配列であった時の話です。

    キャンセル

  • 2017/10/23 02:04 編集

    To: hayatomo さん
    返答していない [質問への追記・修正、ベストアンサー選択の依頼] に返事を返しては如何でしょうか。

    キャンセル

  • 2017/10/23 08:33

    削除依頼済です。

    キャンセル

  • 2017/10/23 10:42

    この粒度の回答作るだけで15分くらいは掛かるんだけど、
    think49さんレベルの人を派遣やクラウドファンディングで仕事依頼したら1時間で3000〜4000円くらいは掛かるよ。

    それを踏まえて本気で削除依頼出せばいいと思ってるの?
    この質問消えたらわざわざthink49さんが回答出す為に費やした時間はどうなると思う?

    別に金だせと言ってるわけじゃないけど、「削除依頼済です。」の一言で片付けようとするなら、
    せめてthink49さんが善意でひねり出した「15分を撒き戻してほしい」。
    他人の時間を巻き戻せないなら誠実に対応するべきだよ。

    キャンセル

  • 2017/10/23 11:29

    時系列的に削除依頼済でその後に回答がありましたので、取消はきかないのです。

    キャンセル

  • 2017/10/23 16:07

    退会されたようですが、記事を読むことは出来ると思うので、私の意見を書いておきます。

    To: hayatomo さん(質問者さん)
    > 削除依頼済です。
    「削除依頼済なこと」と「返信しないこと」は別の問題です。
    hayatomo さんは「先に投稿された」修正依頼に返答せず、「後から投稿された」私の回答にだけ補足質問する返信をしました。
    hayatomo さんは「私の回答に返信する時間」を「修正依頼に返信する時間」にあてる事が出来る状況でしたが、それをしませんでした。
    hayatomo さんは私の回答に対して「削除依頼済です。」と返信せず、修正依頼に対してだけ「削除依頼済です。」と逃げを打ちました。
    とても不誠実な行為だと私は思います。

    > ご回答ありがとうございます。「pipe関数が返す関数の実引数が配列だった時に」とありますように、pipe関数の実引数が配列であった場合ではなくて、pipe関数が返す関数の実引数が配列であった時の話です。
    この質問に対しての解を私は持っていますが、不誠実な質問に回答するつもりはありません。
    他の方が回答に参加しないのも、hayatomo さんの対応に思うところがあるからだと思います。

    批判が集中している事から誤解してほしくないのですが、修正依頼をする人は、hayatomo さんが改善すれば回答してくれる人たちでhayatomo さんの敵ではありません。
    この質問に修正依頼をした方々はJavaScript回答者の中でも常連の方であり、改善を見せた人に回答してくれる人だと私は思います。

    hayatomo さんは回答してくれる方も一人の人間だと認識しているでしょうか。
    hayatomo さんが誠実な態度をとれば回答者は誠実に返してくれますが、不誠実な態度をとれば快い回答を返してくれません。
    hayatomo さんが書いた文章を他人がどのように捉えるか、という事をもう少し意識してほしいと思います。

    > 時系列的に削除依頼済でその後に回答がありましたので、取消はきかないのです。
    こちらについては、コメントを投稿できる時点でまだ退会してないはずなので、運営に退会申請取り消しの要望を送る事は可能であったと思います。
    実際、どのような対応になるのか不明なので、運営に問い合わせました(返信待ち)。
    また、「質問の削除」と「ユーザの退会」は別物です。
    質問を削除したら他の人が参照する事が出来なくなりますが、退会申請はユーザ名が見えなくなるだけでログとしては残ります。
    なので、質問内容を改善する事に意味はあります。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    15246questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Node.js

    1729questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • 関数型プログラミング

    26questions

    関数型プログラミングとは、関数を用いて演算子を構築し、算出し、コンピュータプログラムを構成する枠組みです。