タグ

2007年11月8日のブックマーク (4件)

  • 不動点演算子ふたたび - sumiiの日記

    (追記:Yコンビネータって何に使うの?) Yコンビネータ(Curryの不動点演算子)を説明するのがプチブーム(死語)らしいので、ふたたび挑戦。 まず、ふつーに再帰関数factをSchemeで定義してみる。 (define fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1))))))この定義は、右辺にfact自身が出現するので、再帰的定義なのであった。ここから右辺にfactが出現しないようにするのが目標。とりあえず、factを関数の引数として外から受け取るようにしてみる。 (define make-fact (lambda (my-fact) (lambda (n) (if (= n 0) 1 (* n (my-fact (- n 1)))))))これは( (make-fact fact) 10)みたく使えるが、make-factを呼び出す際に

    不動点演算子ふたたび - sumiiの日記
    okagawa
    okagawa 2007/11/08
    型つき言語での不動点演算子の定義方法など
  • IronPython 2.0 Alpha4 で追加された"-X:PreferComDispatch"オプションって、何の役に立つの? - ふにゃるんv2

    IronPython 2.0 Alpha4が出ました。 早速、OPC Dialyさんの所で簡単に訳してもらっています。(英語ダメぽな私にとって、とっても有難いっす) で、ここで言及されている、"-X:PreferComDispatch"オプションなんですが、説明では、以下のように解説されています。 -X:PreferComDispatch起動オプション。IDispatchインターフェイスをもつCOMコンポーネントを直接操作可能にするオプション。つまり、ラッパアセンブリの事前作成がいらない。 百聞は一見に如かず。まずは、試してみましょう。 IronPython1 posted by (C)wacky …判ります? 以前、私が書いたネタでは、以下のように作業して、初めてActiveXが使えていました。 "tlbimpコマンド"を使って、COMオブジェクトを.NETで読める形式に変換 clr.A

    IronPython 2.0 Alpha4 で追加された"-X:PreferComDispatch"オプションって、何の役に立つの? - ふにゃるんv2
    okagawa
    okagawa 2007/11/08
    IronPythonからCOMへのdirect dispatch
  • Gauche でテスト作成支援 gca.el - ひげぽん OSとか作っちゃうかMona-

    昨日、「test* に与えるテスト名の命名が面倒だ」と書いた所、naotoさんから gca.el という koguroさん作の Emacs Lisp を教えていただきました。 これは便利。 gca.el テストケース作成支援のためのツールを作りました(拙作のEmacs用のユーティリティに含めてあります gca-20060903.tar.gz)。 単体テストをきちんと書くのは面倒ですが、通常コードを書くときは、無意識のうちにgosh上で動作確認をしつつコードを書き進めているかと思います。この動作確認の結果を基に単体テストを作成してしまおうというのがこのツールです。 デモ 実際に動作しているデモムービーを見るとわかりやすいです。(GaucheFest:koguroにあります) デモムービー(mov形式) 4.8MB デモムービー(wmv形式) 2.4MB インストール gca.el の先頭に書

    Gauche でテスト作成支援 gca.el - ひげぽん OSとか作っちゃうかMona-
    okagawa
    okagawa 2007/11/08
    Schemeのテスト作成支援ツール。Pythonのdoctestに通じるものがある。
  • 正規表現の文字クラス - 兼雑記

    Perl は正規表現とか " ではさまれた文字列の中にある変数とか配列を展開してくれるんですが、これは明らかに正規表現の文字クラス ([abc] とか書くヤツ) とブツかるわけです。 以下のコードは @a に 0-999 まで "x" っていう変数をつっこんでから s/$a[...]/y/; 的なことを実行して、 $_ に入ってる x を y に変えようとするコードをいくつか。 #!/usr/bin/env perl for ($i=0; $i < 999; $i++) { $a[$i] = "x"; } $_ = "x"; s/$a[12]/y/; print "12: $_\n"; $_ = "x"; s/$a[123]/y/; print "123: $_\n"; $_ = "x"; s/$a[-2]/y/; print "-2: $_\n"; $_ = "x"; s/$a[-22]

    正規表現の文字クラス - 兼雑記
    okagawa
    okagawa 2007/11/08
    本当ならひどい。勘弁してください。。