タグ

2008年5月2日のブックマーク (3件)

  • tapは便利かも - ボクノス

    Ruby1.9に搭載されたtapが便利そうなので、Schemeに移植してみた。 ところでtapって何よ 副作用専門メソッド。 入力 -> tap -> 出力 V 副作用要するに、Linuxコマンドで言う所のtee。デバッグに便利かも。 Schemeに移植 簡単。 (define (tap f x) (f x) x) ワンライナでオケ。 使ってみる 1から10までのリストを二乗する。 (define (p x) (display x) (newline)) (define (square x) (* x x)) 結果がナカナカいい。 (map square (tap p (iota 10 1))) ; (1 2 3 4 5 6 7 8 9 10) ; (1 4 9 16 25 36 49 64 81 100) 途中にtapを挟んでおけば、任意の箇所にprintfデバッグを仕掛けられる。 se

    tapは便利かも - ボクノス
  • デバッグ時のprint文挿入 - 週記くらい(BTS開発記)

    デバッグ時のprint文挿入 lisp どうせprintfデバッグしかしないんだから、 tapは便利かも - ボクノス tapの方向性とはどんどんずれていきますが、common lispのマクロを使う方法の場合。 長いS式の値の場合、(p の閉じカッコ入力するのが面倒だと思ったので、デバッグ用にprintしたいS式の前に、#? を書くと直後のS式を評価した結果のprint文を挿入するマクロを書いてみました。*1 マクロ定義 (set-dispatch-macro-character #\# #\? #'(lambda (stream char1 char2) (let ((sexp (gensym))) `(let ((,sexp ,(read stream t nil t))) (print ,sexp) ,sexp)))) 使用例 (defun rec (a &optional (ac

  • はやわかりMoose - Yappo::タワシ

    空前のMooseブームが到来してるのでCookbook読んで理解したことを書いた。 Roleについてはdannさんが書いてるので割愛。 http://catalyst.g.hatena.ne.jp/dann/20080501/p1 Moose っつうのは高機能なAccessorが作れる以外にも、親クラスのメソッドの前後に色々hookできたりとか、中にhookしたりとか、java的なinterface定義できたりとかできるよ。 OOPらしいOOPをPerlで実現させるって言われてるけど、Perl的に言うと上の一文じゃないのかな。 他にも何ができるか見てる最中。 今日はMooseネタしか書かないから http://d.hatena.ne.jp/yappo/20080501 をブクマするといいよ。