タグ

ブックマーク / keyesberry.hatenadiary.org (14)

  • Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう!(その3) - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう!(その3) : melborne.github.com - 引き続き「なぜ関数プログラミングは重要か」を Rubyを使って解釈し自分の理解に基づいて解説してみます 誤解が有るかも知れません いやきっとあります ご指摘いただければ助かります プログラムの貼り合せ(遅延評価) 次に関数プログラミングの2つ目の強力な糊 つまりプログラムを貼り合せる糊について説明する いま2つのプログラムfとgがあって 入力inputをこれらに適用する場合を考える g (f input) プログラムfは入力inputを受け取ってその出力を計算し その出力はプログラムgの入力として使われる 一般的なプログラム言語ではfからの

    Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう!(その3) - hp12c
    taka222
    taka222 2011/02/22
  • Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう! - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう! : melborne.github.com - 「Why Functional Programming Matters:なぜ関数プログラミングは重要か」(原著者:John Huges 邦訳:山下伸夫)という論文があります なぜ関数プログラミングは重要か これはMirandaという関数型言語を使って プログラマにとって 関数プログラミングがいかに重要であるかを論証したものです これが書かれてからの年数*1と被ブクマ数を見れば 極めて有益でmust_readであることは明らかでしょうが 自分にとっては高度な内容で読み解くのにかなり苦労しています リストを使った関数の貼り合せ(3.の前半)までについて

    Rubyを使って「なぜ関数プログラミングは重要か」を解読しよう! - hp12c
    taka222
    taka222 2011/01/27
  • Rubyの末尾再帰最適化を理解する - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 Rubyの末尾再帰最適化を理解する : melborne.github.com - RubyではSchemeなどとは異なって 末尾再帰の最適化を勝手にしてはくれません 再帰は再帰なんかじゃない!末尾再帰こそが真の再帰なんだ! でもid:athosさんが Rubyで末尾再帰最適化を実現するコードを書いてくれました Rubyで末尾再帰最適化をする。 - Homoiconic Days 自分の実力だと一見しただけでは何をしているか理解できなかったので 少し自分用にコードを整理してその処理を追ってみます class Module def tco(meth) called = false tmp = nil orig_meth = "orig_#{meth}" alias

    Rubyの末尾再帰最適化を理解する - hp12c
    taka222
    taka222 2011/01/21
  • IRB それはRubyistの魔法のランプ - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 IRB それはRubyistの魔法のランプ : melborne.github.com - IRB*1 名前を聞けば誰でもわかる 超有名なライブラリ IRBを知らなけりゃ それはもぐりのRubyist :$ IRB 全部のRubyに付いてくる あなたとRubyの対話の窓口 できないことがあるのなら irbと打ってみよう rubyと打ってもダメですよ IRB それはRubyistの魔法のランプ こすれば何かが現れる IRB それはRubyistの魔法のランプ こすって願いを叶えよう I RuB you I RuB you :TO IRB 色気がないのはご愛嬌 色がいるなら .irbrcしてください 補完だってインデントだって そうしたいならプロンプトだって あなた

    IRB それはRubyistの魔法のランプ - hp12c
    taka222
    taka222 2010/11/17
  • ((Rubyで) 書く (Lisp) インタプリタ) - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 ((Rubyで) 書く (Lisp) インタプリタ) : melborne.github.com - Peter Norvigさんの((Pythonで) 書く (Lisp) インタプリタ) という記事(青木靖さん訳)がすごい 100行ほどのPythonコードで Schemeのインタプリタの基部分を書いている Pythonのコードは見た目がRubyのコードとよく似ているので Rubyしか知らない僕でも何となく読める この記事を解読してRuby版Schemeインタプリタを書いたら インタプリタ Pyhon Scheme それからRubyのことも もう少し分かるようになるかもしれない こんなお得な勉強方法はないぞ きっと そんなわけで... 以下では上記記事を参照し

    ((Rubyで) 書く (Lisp) インタプリタ) - hp12c
    taka222
    taka222 2010/11/16
  • RubyでANSIカラーシーケンスを学ぼう! - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 RubyでANSIカラーシーケンスを学ぼう! : melborne.github.com - CUIの世界は地味な世界です 真っ黒なターミナル画面に単一色の文字列 それが却って落ち着くという向きもありますが 今となってはその地味さは際立っています ターミナルで色を使う方法を学ぶことで 新しい世界が開けるかも知れません ようこそANSIカラーの世界へ エスケープシーケンス ターミナルで色を使うためには エスケープシーケンスというものを利用します エスケープシーケンスはターミナル上で色を含む特定の制御を 実現するための特殊な文字列です print "\e[31mhello\e[0m" これによりターミナル上に青文字で「hello」と出力されます この"\e[31m"

    RubyでANSIカラーシーケンスを学ぼう! - hp12c
    taka222
    taka222 2010/11/10
  • オープンソース・プログラマも知っておきたい商標のこと(その1) - hp12c

    オープンソース・プログラミング言語Perlの商標が 第三者によって登録されたことが話題になっている 北畠徹也氏、「Perl/パール」を手中に この者はPerlのみならずRUBY Python Apache OPENSOURCE Jakartaなどについても申請をしている 北畠徹也氏が「RUBY(ルビー)」と「Apache(アパッチ)」を商標登録している件 これに対してどうやらPerl Rubyコミュニティでは 専門家を交えて何らかの対策を検討しているようだ Twitter / Daisuke Maki Perl商標に関しては「気持ち悪い」ということ以外 事実上問題はない、というのが現在の認識。ただし、だからといって何もしないというわけではないですよ。すでに先日よりあちこちに連絡を取ったりはして動き始めています Twitter / Yukihiro Matsumoto 登録商標について。Ru

    taka222
    taka222 2010/06/16
  • Ruby製ノコギリで株価を切り刻もう! - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 Ruby製ノコギリで株価を切り刻もう! : melborne.github.com - 株式投資は社会人のたしなみである 投資をせずしてリアル経済を知ることはできない ところが就業中に君がWebにアクセスして 株価をチェックしていると上司は怒る 場合によっては君を解雇する そんなばかなことはあってはならない yahoo_stockライブラリ 君がRubyを使えるなら上司に気づかれずに 株価をチェックできるかもしれない 幸いRubyにはyahoo_stockというライブラリがある Ruby gem for stock / finance data « Nasir Jamal yahoo_stockはYahoo!Financeが提供するCSVデータにアクセスする g

    Ruby製ノコギリで株価を切り刻もう! - hp12c
    taka222
    taka222 2010/03/05
  • Rubyのブロック(クロージャ)はローカル変数をインスタンス変数に変えるマジックだ! - hp12c

    ブログを下記に移転しました。デザイン変更により移転先では記事が一層読みやすくなっていますので、よろしければ移動をお願い致します。 Rubyのブロック(クロージャ)はローカル変数をインスタンス変数に変えるマジックだ! : melborne.github.com - Ruby クロージャ - ソースコード備忘録を読んで 自分のRubyにおけるブロックと変数の理解が怪しいことがわかった でちょっと普通とは違うアプローチからの整理を試みて 理解できた気がするので書いてみます 誤りを教えてくれればうれしいです ローカル変数 プログラムコードはプログラマの意思をインタプリタに伝えるものだ Rubyでは オブジェクトに処理を依頼する形でプログラムを組成するけど そのとき変数はプログラマが 対象のオブジェクトを指し示すためのラベルとして用いられる すなわち変数はオブジェクト参照ラベルだ 複数の手続きブロッ

    Rubyのブロック(クロージャ)はローカル変数をインスタンス変数に変えるマジックだ! - hp12c
    taka222
    taka222 2010/02/21
  • Rubyでカラフルにグラフを書こう! ーGraphViz色見本 - hp12c

    GraphVizを使ったグラフ作りは楽しい でも以外と時間が掛かる 特に時間を取られるのは色選びだ GraphVizで使える色は豊富だけれども 豊富過ぎて名前を見ただけでは色がわからない だから前回作ったGraphAzで 色見を作ってみた これで色選びもばっちり! 作成コードも貼っておきます gist: 294499 - GitHub

    Rubyでカラフルにグラフを書こう! ーGraphViz色見本 - hp12c
    taka222
    taka222 2010/02/05
  • Rubyでいろんなかたちと矢印のグラフを書こう! ーGraphViz Shape&Arrow見本 - hp12c

    GraphVizを使ったグラフ作りは楽しい でも以外と時間が掛かる 特に時間を取られるのはノードのかたちと エッジの矢印選びだ GraphVizで使えるかたちと矢印は豊富だけれども 豊富過ぎて名前を見ただけではそれがわからない だから前々回作ったGraphAzで見を作ってみた これでかたちと矢印選びもばっちり!

    Rubyでいろんなかたちと矢印のグラフを書こう! ーGraphViz Shape&Arrow見本 - hp12c
    taka222
    taka222 2010/02/05
  • Rubyでアニメーション・グラフを作ろう! - hp12c

    ベルマンフォードのアルゴリズムで実行される結果も逐次表示 - Seeking for my unique color. を見てGraphVizの出力からアニメーションgifを作りたくなった Rubyにはruby-graphvizというGraphVizのinterface libraryと RMagickというImageMagickのinterface libraryがあり これらを使えば目的は達成できるみたいだ ruby-graphvizのinterfaceは自分にはわかり辛かったので これをラップする形でGraphAz*1というクラスを書いて 上のアニメーションgifを出力してみた 用途が限定的で実装にも問題がありそうだけれど GraphVizのDOTデータの出力としても使えるので 無責任無保証で使ってくれる人がいればうれしい 使い方 コードを見るのが早いと思うので 簡単な例を示した ま

    Rubyでアニメーション・グラフを作ろう! - hp12c
    taka222
    taka222 2010/02/04
  • Rubyで最短経路を探索しよう! - hp12c

    人生を書き換える者すらいた。: 人材獲得作戦・4 試験問題ほか 次に同じ質問がきたときに 「1時間いらないっしょ、こんなの」 と是非ともほざくために 今から勉強します ダイクストラ法による最短経路探索 図におけるS点からG点に到達するための最短経路を求めたい 各ノードを結ぶエッジを糸としてS点をゆっくりと持ち上げた場合 緊張する糸が変移しながら最終的にS−B−D−Gを結ぶ糸が緊張して これが最短経路と分かる*1 計算機上でこの現象をシミュレートしたものを ダイクストラ法というらしい 今各ノードとそこから伸びるエッジの情報(コストと接続先)を渡して その最短経路および総コストを出力するプログラムを考えてみよう data = { :s => [[5, :a], [4, :b], [2, :c]], :a => [[5, :s], [2, :b], [6, :g]], :b => [[4, :s

    Rubyで最短経路を探索しよう! - hp12c
  • SchemeとRubyでリストの操作を学ぼう - hp12c

    引き続き「計算機プログラムの構造と解釈」を使って 今度はSchemeとRubyでのリストの操作を見ていこうと思います なおSchemeのコードは書からの抜粋で 説明は自分の要約です リスト要素の参照 Schemeにはデータオブジェクトの並びを表現する リストというデータ構造がある リストはlist手続きで作ることができるが これはconsを入れ子にしたものと等価である list 1 2 3 4 (1 2 3 4) (cons 1 (cons 2 (cons 3 (cons 4 nil)))) (1 2 3 4) だからconsを順にcdrダウンしていけば リストの各要素にアクセスできる これを使って リストのn番目の要素を返す手続きlist_refを定義する リストは0番から始まる (define (list_ref items n) (if (= n 0) (car items) (l

    SchemeとRubyでリストの操作を学ぼう - hp12c
  • 1