タグ

ブックマーク / jutememo.blogspot.com (9)

  • Haskell で正規表現 (1)

    1. Text.Regex Haskell で正規表現を使うには、Text.Regex を利用する。 Text.Regex.Posix における正規表現は、POSIX regular expression. Uses the POSIX regular expression interface in Text.Regex.Posix POSIX regular expression については、 Rx - Posix Basic Regular Expressions を参照。 POSIX とは Wikipedia によると、 POSIX(ポジックス、Portable Operating System Interface)とは、異なる実装のUNIX OSを始めとする各種OSに共通のAPIを定め、移植性の高いアプリケーションソフトウェアの開発を容易にすることを目的としてIEEEが策定したアプ

  • Haskell の mapM_ – foldr と (>>) を意識して

    1. mapM_ 関数は、どのように定義されているのか? Haskell の print 関数で文字列を連続して出力させたい場合、次のように書く。 main = do print "hoge" print "piyo" print "fuga" これを短かく書きたいなら、 main = mapM_ print ["hoge", "piyo", "fuga"] 最初、意味もわからず mapM_ の動作を覚えようとした。 ^^; なぜこのように書けるのだろう? 2. map, fold 系の復習から まずは map, fold 系の復習から。 map 関数は「各要素へ指定された関数 f を適用」する。 リストの要素を 2 倍するなら、 *Main> map (*2) [0..5] [0,2,4,6,8,10] これに対して、fold 系 の関数は大雑把なイメージとして、「各要素の間に二項演算子

    Haskell の mapM_ – foldr と (>>) を意識して
  • Python で部分適用 - functools モジュールの partial 関数

    1. Python は一部の引数を与えて関数を呼び出すことができない Haskell では、関数に複数の引数があるとき、先に一部の引数のみ渡しておき、後から残りの引数を渡すことができる。一部の引数を与えることを「部分適用」と言う。 Python では、普通そういうことはできない。例えば、3つの引数を足し合わせる関数 addThree 関数に対して、1つの引数だけ与える。 def addThree(a,b,c): return a + b + c print addThree(1) 上記を実行すると、引数が足りないとエラーが表示される。 exceptions.TypeError: addThree() takes exactly 3 arguments (1 given) 2. functools の partial 関数で部分適用 6.6 functools モジュールの partial

  • wxPython の準備 – Python で GUI

    1. 標準添付の Tkinter は使わない PythonGUI を作成したい。 wxPython でお手軽 gui によると、 Python には Tkinter, PyQt, PyGTK, wxPython などの gui toolkit があります。 いろいろと物色した結果次のことが分かりました。 これらの toolkit のマニュアル、チュートリアルは極めて不備である。 wxPython はデモスクリプトがあるだけまだましである。 wxPython はいろいろな widget が揃っている。 wxPython は最近人気があるようである。(その結果として web resources が他の toolkit より多い。) Python に標準で Tkinter がついている。 16. Tkを用いたグラフィカルユーザインターフェイス の 16.1.2.2 簡単なHello Wor

  • JavaScript のクロージャ と オブジェクト指向

    1. JavaScript における重要な概念 久しぶりに JavaScrip を書こうと思ったら、ほとんど頭の中から抜けている。 (+_+) this とか prototype って何だっけ?というレベル。てゆうか考えてみたら、その辺読んだけど何かごちゃごちゃしていて頭に入らなったので面倒くさくなって言語仕様読むのやめたんだった。 ^^; シンプルなもの以外理解も記憶もできない。 ところで、以前に JavaScript のコードを書くときに参考にしたは、 JavaScript に関するは、これしかまともに読んだことがない。 特に以下の部分が、JavaScript を使う上で参考になった。 3.9  グローバル領域の利用を減らす, p28 4.10 クロージャ, p43 5.2   オブジェクト指定子, p57 5.4   関数型, p59 上記の内容を思い出すために、例を考えながら、

    JavaScript のクロージャ と オブジェクト指向
  • Javascript から見る Ruby のイテレータ - Enumerable

    JavaScript のクロージャ と オブジェクト指向 」のつづき Ruby の Enumerable Ruby ではコンテナの役割を持つクラスに Enumerable モジュールをインクルードし、その要素を順にブロックに与えるメソッド each を定義することにより、要素に対する便利なメソッドがいくつか使えるようになる。 例えば、「人」は `名前' と `年齢' を属性として持ち、 「グループ」 に所属しているとする。 Ruby のイテレータ (2) - Enumerable より # 人 class Person attr_reader :name, :age def initialize(name, age) @name, @age = name, age end def to_s @name + " " + @age.to_s end end # グループ class Grou

  • Python のクラスメソッド – デコレータ @classmethod, @staticmethod を使って

    1. メソッドをクラスメソッドにするときは、デコレータを使う あるメソッドをクラスメソッドにするとき、 Python ではデコレータを使うことができる。 2.1 組み込み関数 によると、(太字は引用者による) classmethod( function) function のクラスメソッドを返します。 クラスメソッドは、インスタンスメソッドが暗黙の第一引数としてインスタンスをとるように、第一引数としてクラスをとります。クラスメソッドを宣言するには、以下の書きならわしを使います: class C: @classmethod def f(cls, arg1, arg2, ...): ... ふーむ、ここでも第一引数が必須で、それがクラスを参照するということか。Python のこういう書き方は、最初とっつきにくいと感じた。 (+_+) デコレータの書き方としては、関数の前に @classmeth

    Python のクラスメソッド – デコレータ @classmethod, @staticmethod を使って
    joan9
    joan9 2010/08/14
  • JavaScript のブロックスコープ - Java, Ruby との比較

    1. ブロック内の変数のスコープ Java のブロックにおける変数のスコープ Java における「ブロック」とは、「Java言語規定 ブロック及び文」によると、 ブロック(Block) は,中括弧で括られた一連の文及び局所変数宣言文とからなる。 ブロック内における変数のスコープは、「14.3.2 局所変数宣言の有効範囲」によると、 ブロック内で宣言された局所変数の有効範囲は,ブロックの残り部分とし,変数そのものの初期化子を含む。局所変数仮引数の名前は,その有効範囲内の局所変数又は例外仮引数として再宣言してはならない。再宣言すると,コンパイル時エラーとなる。 つまり、{ } で囲まれた中で宣言された変数は、そのブロックの内側でのみ有効となる。 JavaScript にブロックスコープはない これに対して、JavaScript では、「Core JavaScript 1.5 Guide:Blo

  • すぐに忘れる脳みそのためのメモ

    joan9
    joan9 2010/03/22
  • 1