タグ

ブックマーク / tomapd.hatenadiary.org (2)

  • tomapd == 22% - Gauche を C プログラムから使う

    libgauche をリンクすればできるみたい。http://www.practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AYAGHG%3AIntroduction を参考に、外部の scheme コードをロードして結果を表示するプログラムを書いてみた。 main.c で同じディレクトリにある test.scm をロードして、関数 test を評価。結果は と決めうち。 /* main.c */ #include <stdio.h> #include <gauche.h> ScmObj test() { Scm_Load("./test", 0); ScmObj expr = Scm_ReadFromCString("(test)"); return Scm_Eval(expr, SCM_OBJ(Scm_UserModule())); } int

    tomapd == 22% - Gauche を C プログラムから使う
  • define-syntax でユニットテスト - tomapd == 22%

    結城さんが define-syntax を使った debug マクロ(デバッグプリント - 結城浩のSICP日記 - sicp)を紹介されている。マクロの便利な使い方の好例だと思う。Scheme ではなく、Common Lisp の話になってしまうが、高い評価を受けている Practical Common Lisp という(オンラインで読める)にもマクロを使った面白い例が 9 章に載っている。その章ではマクロを使ってユニットテストのための簡易ライブラリを作っていくのだが、まだ Lisp のマクロというものがよく分からなかった僕はこの内容にとても感銘を受けた。せっかくなのでこの内容の前半をさらっと簡単に Scheme (Gauche) を使って紹介したいと思う。 ではまずつぎのようなテスト(関数 + のテスト)を例にしている。 (= (+ 1 2) 3) (= (+ 1 2 3) 6)

    define-syntax でユニットテスト - tomapd == 22%
  • 1