タグ

injectに関するkeyesberryのブックマーク (5)

  • Rubyのinjectで東京までの最短経路を解くYO!

    「すごいHaskellたのしく学ぼう!」の第10章に、Haskellを使って「ヒースロー空港からロンドンへの最適経路(optimal path)」を算出する例が出ていました。例ではその実現に畳み込み演算が使われていたので、前回同様、Rubyでもinjectを使ってこの問題を解いてみたいと思います。アヒル脳じゃなかなかHaskellの世界に入っていけませんよー。 オリジナルの解説(英語)とHaskellによる解法は、以下にあります。 Functionally Solving Problems - Learn You a Haskell for Great Good! 問題 問題設定は次のようなものです。 1. 成田空港(NRT)から東京(Tokyo)に向かう2の幹線道路A,Bがある。 2. 途中にこれらを橋渡しする3の地方道路Cがある。 3. 地方道路で区切られる各道路セグメントの通過に

    keyesberry
    keyesberry 2012/06/20
    ブログを書いたYO!
  • Rubyのinjectで逆ポーランド記法電卓を書くYO!

    「すごいHaskellたのしく学ぼう!」を読んでます。こののタイトルとカバーデザインはかなりミスリードですね!もしこのを入門書と呼ぶのなら、僕の脳に相当の問題があるか、Haskellが相当に難解であるかの何れかと断定せざるを得ません。いや、おそらく問題は僕の脳にあるのでしょう。そうであれば安心です。プログラム言語はツールなのですから難解であってはなりませんからね。Rubyはアヒル言語ですから、知らないうちに僕の脳もすっかりアヒル脳になっていたのですね.. ミスリードだなんて言ってすいませんでしたm(__)m1 さて、このの第10章にHaskellによる「逆ポーランド記法電卓」の例が出ていました。例ではその実現に畳み込み演算が使われていたので、前回記事にしたinjectを使ってRubyでこの電卓を書いてみます。 逆ポーランド記法 逆ポーランド記法では演算子が数字の後にきます。 この演算

    keyesberry
    keyesberry 2012/06/19
    ブログを書いたYO!
  • YOUたち!RubyでinjectしちゃいなYO!

    プログラミングの存在価値は処理の自動化です。任意の集合に対して処理を繰り返しその結果を返す、それがプログラムです。つまり集合に対して処理を繰り返す能力が、プログラムの価値を決定付けるのです1。 「手続き型言語」ではループが処理の繰り返しを実現するための重要な手法の一つです。しかしループは、一時変数を用意してプログラマがループの進行を管理しなければならない、という欠点があります。そしてその管理ミスがバグとなります。 「関数型言語」では再帰が処理の繰り返しを実現するための重要な手法の一つです。再帰では再帰の進行はその構造に基づいて自動的になされるので、プログラマがそれを管理する必要はありません。しかしその一方で、処理が多段階に渡る立体的なものとなるので、その動作の理解が平面的なループ処理に比べて難しいという欠点があります。習得には慣れが必要です。 Rubyは、手続き型言語と関数型言語の両方の側

    keyesberry
    keyesberry 2012/06/18
    ブログを書いたよ
  • Haskell でデータコンストラクタを置き換える高階関数 - reduce について誤解していたこと

    0. 目次: 1. 型を処理する高階関数を考える視点 2. リストのデータコンストラクタを置き換える関数 a. reduceList 関数の定義 b. reduceList で要素を足し上げる c. reduceList で同じ値を返す d. reduceList から map 関数を導く e. reduceList から filter 関数 f. 述語を満たす要素に、特定の関数を適用する g. reduceList からリストを結合する関数 h. reduceList でリストを逆順にする関数 i. Haskell の標準ライブラリにある foldr 3-1. 二分木でデータコンストラクタを置き換える関数 (1) – 左右の子が必ずある場合 a. reduceBinaryTree 関数の定義 b. reduceBinaryTree 関数から、map, filter 関数を導く 3-2.

  • Ruby: Recording Method Calls and Playback With Inject

  • 1