OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

関数型プログラミングを料理の仕方でたとえてください

  • 暇なときにでも
  • 質問No.8451433
  • 閲覧数599
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 53% (270/507)

関数型プログラミングを料理の仕方でたとえてください。
作る料理はなんでも構いません。
料理の一般的なレシピというのは、手続き型プログラミングで
たとえることが可能だと思っています。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル11

ベストアンサー率 73% (164/222)

「手続き型」ではなく、「関数型」ですか、純粋Lispって、昔挫折したので、もう一度理解すべく以下のサイトをざっと読んでみました
http://www.ibm.com/developerworks/jp/views/java/libraryview.jsp?sort_by=&show_abstract=true&show_all=&search_flag=&contentarea_by=Java+technology&search_by=%E9%96%A2%E6%95%B0%E5%9E%8B%E3%81%AE%E8%80%83%E3%81%88%E6%96%B9%3A&topic_by=-1&industry_by=-1&type_by=%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E7%A8%AE%E9%A1%9E&ibm-search=%E6%A4%9C%E7%B4%A2
「手続き型」にどっぷりつかってると解りにくいけど、JavaScript の closure関数みたいなのを引数そのものとして扱うので、材料そのものを引数にはしないらしい。
料理における「不変propaty」はなにかっていうと、「調理器具」だろう。
でもって、「関数そのものが引数になる」ということは、「調理行動」とか、「不変propatyとしてもつ器具による調理」が関数であり、引数になったり返値になるわけで、

ゆでる(){propaty:なべ;run(){ゆでる}}
煮付け(){propaty:なべ;run(){調味料を入れて、煮詰める}}
ボウル盛り(){propaty:ボウル;盛りつけ(){}}
焼く(){propaty:フライパン;run(){焼く}}
皿盛り(){propaty:皿;盛りつけ(){}}
卵料理(調理法){
状態チェック:卵 is 生 ?
調理法.run();
switch (){
状態チェック:卵 is 固ゆで ?
return ボウル盛り();
状態チェック:卵 is 卵焼き ?
return 皿盛り();
}


結果 = 卵料理(ゆでる())
 「結果」 には、ボウル盛り() が返ってくる、状態チェックすると固ゆで卵がはいってるとなって
結果 = 卵料理(焼く())
 「結果」 には、皿盛り() が返ってきて、状態チェックすると、卵焼きが載っている
という具合になるのですかね?
かなり、いいかげんな文法で書いてますけど。文法すらもプログラミング対象になりえるらしいので。。。
お礼コメント
otaks

お礼率 53% (270/507)

ありがとうございます。
参照URLの技術文書の存在は知りませんでした。
結構文量もあるのでゆっくり見てみようと思います。
投稿日時 - 2014-02-15 21:56:25
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル14

ベストアンサー率 55% (1857/3366)

面白そうな問題なので、頭を捻ってみましたが、ダメでした。 そもそも、料理は食材の状態を変化させるもの、関数型プログラミングで言うところの「副作用」ですから、純粋な関数型プログラミングとは相性がよくないでしょう。 自信はありませんが、あえてやるなら 「ゆで卵」関数 入力: 卵 出力: (入力された)卵 副作用: 卵はゆでられて、固まった状態になる といったところではないでしょうか? ...続きを読む
面白そうな問題なので、頭を捻ってみましたが、ダメでした。
そもそも、料理は食材の状態を変化させるもの、関数型プログラミングで言うところの「副作用」ですから、純粋な関数型プログラミングとは相性がよくないでしょう。

自信はありませんが、あえてやるなら

「ゆで卵」関数
入力: 卵
出力: (入力された)卵
副作用: 卵はゆでられて、固まった状態になる

といったところではないでしょうか?
お礼コメント
otaks

お礼率 53% (270/507)

「副作用」。聞いたことがあります。
関数型プログラミングでは副作用をおこしてはならないのですね。
となると入力で卵を入れたら、関数の中で「では、こちらがゆであがった卵です」
と入力した卵とは別の卵が出現してそれが返ってくるのかなと思ったりしました。
投稿日時 - 2014-01-30 23:17:22


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ