2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Lisp Scheme Part36

785 :はちみつ餃子 ◆8X2XSCHEME :2013/07/31(水) NY:AN:NY.AN
ググって調べてみたら script-fu は TinyScheme ベースなんだね。
GIMP をインストールするのはダルいのでとりあえず TinyScheme で動くように書いてみたけど、大丈夫かな?
もしかすると script-fu は古い TinyScheme をベースにしてたり制限されてたりしてて動かないかも?

(macro (define-car-only-proc sym)
`(define
,(let ((str (symbol->string (cadr sym))))
(if (and (>= (string-length str) 5)
(= 5 (do ((i 0 (+ i 1)))
((or (= i 5)
(not (char=? (string-ref str i)
(string-ref "gimp-" i))))
i))))
(string->symbol
(string-append "g-" (substring str 5 (string-length str))))
(string->symbol (string-append "g-" str))))
(lambda arg (car (apply ,(cadr sym) arg)))))

これを使って

(define-car-only-proc gimp-image-get-name)

とすると g-image-get-name が定義されるよ。
元の変数の名前に gimp- という接頭辞が付いていたらそれが g- に付けかえられて、
それ以外の接頭辞だったら元の変数名の頭に g- を追加したものが新しい手続きの名前になるようにした。

もしも Ruby で言うところの method_missing みたいなのを期待しているのなら、それは無理だと思う。

226 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)