Gauche > Archives > 2023/04/29

2023/04/29 00:00:19 UTCshiro
#
今までundocumentedだったので変えちゃったんですが、影響大きいですか? 正式にはreal-* でいきたいと思います。影響大きいようでしたら互換性バインディング入れます。
2023/04/29 10:05:32 UTCshiro
#
compat.real-trigというモジュールで%sinなどのバインディングをimportできるようにしました。
2023/04/29 11:02:44 UTChamayama
#
ありがとうございます。
2023/04/29 11:18:24 UTChamayama
#
新しい Gauche で動かす場合には、(use compat.real-trig) を追加で良いと思いますが、
古い Gauche で動かした場合に、(use compat.real-trig) でエラーにしないよい方法はありますか?

以前だと、
(define-module module-A)
(import module-A)
(define *module-A-loaded* (load "module-A" :error-if-not-found #f))
みたいなことをしていたようです。

あとは、
(if (version>=? (gauche-version) "0.9.13")
  (eval '(use module-A) (current-module)))
とか。
2023/04/29 18:43:15 UTCshiro
#
cond-expand
#
cond-expandでversionの比較演算ができるようにしたいなと前から思ってはいるんですが、今のところあまり綺麗にやる方法はないですね…
#
(use gauche.version)
(define-macro (load-real-trig)
  (if (version<=? (gauche-vresion) "0.9.13")
    `(use compat.real-trig)
    #f))
(load-real-trig)
#
とかもできますが、もうちょいスマートに書きたいですね。
#
(cond-expandでversion比較、の導入に躊躇しているのは、それをやるとsrfi-0と互換にならないことです。)