タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

meta-programmingに関するmadpieroのブックマーク (2)

  • Pythonの式をダイナミックに関数にコンパイルする - karasuyamatenguの日記

    # 関数定義の雛形。Trueのexpressionを後で置き換える。 # ここで、string代入してもいいが、ASTのノードを置き換えた方が安全そうな気がする。 >>> defun=""" def foo(num): return True """ ... ... ... >>> # ASTにパースする >>> x=ast.parse(defun, mode='single') >>> x <_ast.Interactive object at 0x7f963f9c1950> >>> expression='num==42' # ASTでTrueにあたるノードを上の式に置き換える。 # body,valueのコンビネーションは試行錯誤でみつける。 # ASTをダンプする機能があったら簡単に見付かるだろう。 >>> x.body[0].body[0].value=ast.parse(exp

    Pythonの式をダイナミックに関数にコンパイルする - karasuyamatenguの日記
    madpiero
    madpiero 2012/11/28
    文字列であるPython式をコンパイルして関数にする関数
  • Lisp:よくある正解 - Lispについての正しい認識と、それでもLisperがLispを使う理由

    Lispについての正しい認識と、それでもLisperがLispを使う理由 yoriyukiさんのエントリがなかなか 真実を突いていたので、ネタにさせていただきます。 原因のほとんどは経路依存性とかネットワーク効果によるもので、Lisp自体の性質とは無関係だと思います。と言った上で、私が何となくLisp系言語を使わない理由としては、 Too dynamic: 実行時にコードが差し替えられることがすごい利点だ、と言っている人がいましたが、逆に言えば今どのコードが走っているか理解しにくい、という欠点にも繋がる。 Meta programming:S式のおかげでMeta Programmingがしやすいが、Meta Programmingを多用したプログラムは理解しにくい。 動的型付け:利点でもあるけど、特有のバグを引き起こす。 識別子に関数と値の2種類が別々にバインドできる。これは私には非常に美

    Lisp:よくある正解 - Lispについての正しい認識と、それでもLisperがLispを使う理由
  • 1