2009-05-01から1ヶ月間の記事一覧

もっと! ML/Haskell っぽい関数構文

ML や Haskell では、関数を定義する時に、変数だけでなくリテラルやデータ・コンストラクタなどでパターンマッチをすることができますね。PLT Scheme にも、それによく似た構文があります。 > (require scheme/match) > (match '(1 . 2) ((cons x y) (list …

Anaphoric If

Arc の aif のように、意図的な変数キャプチャ (マクロ定義の中で作られた変数をマクロユーザーが参照できるようにすること) を用いたマクロを作る時、Scheme では一般に datum->syntax という関数を使います。 (define-syntax (aif stx) (syntax-case stx (…

マクロを書くマクロで Arc の角括弧構文

Haskellっぽいカリー化関数の構文で、「Haskellっぽい」と言いながらも Arc の角括弧みたいな構文を導入しました。実際にはそれにも偽りがありまして、見た目は Arc っぽいんですが実体は SRFI-26 の cut の糖衣構文に過ぎなかったわけです (次のように変換…