タグ

Macroに関するkhikerのブックマーク (3)

  • 友人がLispに中置記法を導入してしまってめっちゃ強くなってめっちゃカッコ良くなって最早C - IT系で覚醒めたい

    前の前のエントリで紹介した中置記法のマクロですが、「べき乗って右結合じゃね?」ってつぶやいてみたところ即座に改造してくれましたヽ(´▽`)ノわーい右結合がサポートされたことにより代入演算まで入れてくれました。最早C。すごい。if文のtestに中置記法とか反則すぎ!惚れてまうやろー/// ↓以下zeptometer - CLで中間記法(2)から転載 ;ax^2+bx+c=0の大きい方の解を求める (defun test (a b c) (if {a != 0} {{- b + sqrt {b ** 2 - 4 * a * c}} / {2 * a}} {- c / b})) ;sin(a+b)をわざわざ加法定理で展開して求める (defun test2 (a b) {sin a * cos b + cos a * sin b}) ;こんなのもできる。スパゲティ乙。 ;(+ (LOG (SIN

    khiker
    khiker 2011/03/28
    マクロ
  • Emacs Lisp と総称関数 - あどけない話

    僕は Lisper ですが、「Lisp では、マクロを書けばなんでもできる」という主張には、かなり疑問を持っていました。 たとえば、「Emacs Lisp で総称関数を導入することなんてできない」と思っていたのです。しかし、今日ひらめいて、試しにこんなコードを書きました。 (defmacro defmethod (func <type> args &rest body) `(let ((type (intern-soft (concat (substring (symbol-name ',<type>) 1 -1) "p")))) (unless (fboundp ',func) (fset ',func (lambda (data &rest params) (catch 'loop (dolist (predicate-lambda (get ',func 'method)) (if

    Emacs Lisp と総称関数 - あどけない話
    khiker
    khiker 2007/12/29
    型変数
  • Common Lisp マクロを書くときにおろそかにしてはいけないこと - cranebirdの日記

    他にも沢山ありそうですが、最初の方にひっかかったことを列挙。 シンボルが何なのか。変数名みたいなものと曖昧に思っているとつまづく。パッケージと関連していることを意識すること。 keyword がなぜ便利か、理解する。マクロを書いたパッケージと違うパッケージでマクロを展開してみる。 リスト処理をパズルと思っておろそかにしていると、よくない。プログラムを書くプログラム(つまりマクロ)は、結局リスト処理そのもの、ということを忘れない。 read関数とリードテーブル。 ラムダリスト。各種のパラメーター &key &rest を綺麗に使えば、リスト処理を簡潔にできる。 クォート。何が評価されて何が評価されないのか? 見た目。emacs のインデントはカスタマイズできるので、自作マクロのインデントが汚くても悩まない。 以下はむしろ強調されているのであまり引っ掛からなかった。 変数捕捉。ちゃんと gen

    Common Lisp マクロを書くときにおろそかにしてはいけないこと - cranebirdの日記
    khiker
    khiker 2007/07/01
    作り方.
  • 1