vallog
ring wandering
ラベル
defmacro
の投稿を表示しています。
すべての投稿を表示
ラベル
defmacro
の投稿を表示しています。
すべての投稿を表示
2011/12/22
Re: lispのマクロ定義について
›
lispのマクロ定義について | OKWave 最初の例は動かないんじゃないかなー。取りあえずmacroexpandしたらいいかと。この辺は LOL の評価の梯子(だっけ?)の話がわかりやすかった。 [1]> (defmacro inc! (var)`(setq var ...
2011/11/05
ておくlet
›
defmacro ( define-macro ( teoku-let binds . body) `( let ,( map ( lambda (ls) (cons (car ls)'( "ておくれ" )...
2011/06/05
Gaucheのmoduleとdefine-in-moduleとevalで作るsandbox
›
まずはモジュールがどういうものか、いくつか確認してみます。 Gauche ユーザリファレンス: 4.11 モジュール モジュールは、シンボルを束縛へとマップするオブジェクト モジュールは継承することもできます。 既存のモジュールを継承したモジュールに新しい束縛を足してexpo...
2011/02/12
プログラミング Gauche の object マクロと LOL の dlambda マクロ
›
プログラミング Gauche をパラパラ読んでたら、P.270 に object というマクロ(syntax-rules)が載ってたんですね。よく見たら、どこかで見たこのあるような形と機能だなーと。LOL( LET OVER LAMBDA Edition 1.0 )の dlam...
2010/09/23
番号付き部分適用 cutn
›
srfi-26 の cut を使ってると (cut list 1 <0> 3 <1> 4) って書けたら・・・なんて思います。衛生的なマクロではありませんが、試しに書いてみました。 使用例はこんな感じ。<...> は考慮していません。あと、...
先日書いた defmacro! がバグっていたので
›
先日書いたものがバグっていたので、修正しようとしましたが解決できず・・・。 vallog: LOL defmacro! バグは、defmacro! で可変長引数が取れないというものです。 例えば、 (defmacro! (sum . args) ... とした時に ar...
2010/09/15
LOL defmacro!
›
LET OVER LAMBDA Edition 1.0 の defmacro! を scheme(Gauche)で書きました。 vallog: LOL defmacro! 基本的に同じものですが、実験的に g! や o! を変更できるようにしています。 Un-Common...
2010/09/09
syntax-rules, defmacro: define-cxr, define-cxr*
›
caaaar とか cadadadar などを定義するマクロ。 LET OVER LAMBDA Edition 1.0 にもありました。 scmlib.scm - Gauche/src - Code Search Recursive Expansions - Let Ove...
2010/08/26
syntax-rules: cut っぽい let
›
たまたま、試しにこういうアナフォリックマクロを書いていました。値を一時的に束縛したいけど、名前を付けたいわけではないことがよくある気がしたので。別に <> じゃなくて On Lisp の aif や aand みたいに it でも良いんですけども。 そこで、sr...
2010/08/05
defmacro: def-related-closures
›
思いついたので書いた。後悔はしていない。必要ない気がする。
PAIP 2.2 でちょっとしたマクロ
›
PAIP( 実用 Common Lisp (IT Architects’Archive CLASSIC MODER) )の当該箇所の本題とは無関係なのですが、マクロを書いたので晒しておきます。 以下コード。一番上が書籍に載っているもの。2, 3番目がマクロ。 私は On ...
2010/06/06
anaphora
›
syntax-aif On Lisp --- アナフォリックマクロ else は、Common Lisp だと &optional else で良さそうだけど、syntax-rules だとどう書くのが良いのか。。 こういうのは、衛生的なマクロでなくて素直に伝統的な...
2010/05/18
On Lisp からいくつか
›
読んでいて「おっ」と思ったところを、メモっておいても良いですか? On Lisp --- マクロ 関数定義内にあるマクロ呼び出しは関数がコンパイルされるときに展開形に置換される. マクロを呼び出す関数がコンパイルされた後にそのマクロを再定義したらどうなるだろうか? 元々のマクロ...
2010/05/15
defmacro while
›
do マクロの使い方を覚えられないクラスタです。 再帰で書いてみましたが、do マクロ版と同等かよくわかりません。 上が、On Lisp に載ってる版。下が再帰版。 On Lisp --- マクロ 追記 最基盤 再帰版は戻り値が常に nil ですね(笑) 追記2 ...
2010/05/10
『Schemeのマクロは変数衝突を「自動的に回避する」』
›
Scheme:マクロ:CommonLispとの比較 Schemeのマクロは変数衝突を「自動的に回避する」と書きましたが、一体どうやって 回避してるんでしょうか。 ローカル束縛(arithmetic-ifにおける変数var)の衝突の回避については、 マクロ展開ルーチンがマクロが挿...
2010/04/13
LOL tree-leaves
›
これはtree-leaves%%までで十分だと思いましたが、どうなんでしょう。 予測できる使い方の範囲では、これが最も直感的で贅肉のない方法だと思う。 らしい。個人的には、むしろ直感的でなくなっているように思いますが・・・。 ところで、Gaucheで書くにあたり、何の気な...
2010/04/06
defmacro: LOL nif
›
マクロを使えば、他の言語では全く不可能なことが可能になる。 --Doug Hoyte define-syntaxの書き方や仕組みも良くわかっていないのですが、取り合えずトライ。 define-syntaxの方はexprに副作用があっても1回しか評価されてない、ということで良...
defmacro: LOL nlet
›
マクロは、Lispが1つのプログラミング言語として有する唯一最大の強みであり、いかなるプログラミング言語においても唯一最大の強みである。 --Doug Hoyte 著者のLisp(のマクロ)マンセーっぷりがすごい。 (Gaucheで書いてみてます) Let Over La...
4 件のコメント:
2010/03/29
defmacro: fluid-let
›
Gauche ユーザリファレンス: 4.6 変数束縛 マクロ 独習 Scheme 三週間 Chapter 8 マクロ ほぼ写経ですが。
defmacro: or
›
gensymはgenerate symbolでしょうか。 Gauche ユーザリファレンス: 6.5 シンボル
›
ホーム
ウェブ バージョンを表示