Gauche > Archives > 2024/05/25

2024/05/09 20:35:34 UTCshiro
#
Wow, nice! And thanks for the note on http, I'll fix it. BTW, if it has dual (or more) licenses, you can list it as :licenses ("CC0" "Apache-2.0").
2024/05/14 15:34:30 UTCleah2
#
I noticed this trick works in Gauche (using let-syntax inside define-syntax for local macros), but no other Scheme. Is it intentional? Will it stay? https://l2.re/yV8lMH
2024/05/14 15:38:54 UTCleah2
#
hm, maybe it doesn't work. :(
2024/05/14 16:21:37 UTCleah2
#
more relevant, I'm working with some hashes and would like to see the contents on the repl too. But implementing write-object for <hash-table> doesn't work, neither for pprint. is there a way to have that?
2024/05/15 00:27:34 UTCshiro
#
About let-syntax: there's a limitation of the forms that can come rhs of define-syntax; it must be either a syntax-rules form, an er-macro-transformer form, or a macro/syntax keyword. Your example is invalid, merely not error-checked (maybe I should). https://practical-scheme.net/gauche/man/gauche-refe-draft/Hygienic-macros.html#Hygienic-macros
#
SRFI-147 allows you to have local definitions within a transformer spec: https://srfi.schemers.org/srfi-147/
#
Gauche hasn't supported SRFI-147 yet, though. I think I attempted once and there was some corner cases that hygiene didn't work well. I forgot the details.
#
Regarding hash-table content, yes, it's nice that REPL can print its content. You can't override printing output of built-in objects with write-object; that's by design. I put off implementing the content printing b/c (1) we didn't have pprint, and printing content of a hash table would potentially produce huge output, and (2) a hash table can have arbitrary comparator and that can't be serialized.
#
Now that we have pprint, so (1) isn't an issue any longer. We can also workaround (2) by priting comparator as unreadable object.
#
(Actually, you can see there's a code that print hashtable contents, but it is currently #ifdef-ed out).
#
I'll track hash-table printer issue with https://github.com/shirok/Gauche/issues/1032
2024/05/15 14:12:58 UTCleah2
#
Thanks. At least Gauche properly works when one defines two macros and only exports one, so the local definitions are just convenience. :)
2024/05/15 14:21:39 UTCleah2
#
I wonder if the SRFI-147 reference implementation could work given er-macro-transformer...
2024/05/17 04:33:43 UTChnagamin
#
gauche-packageでout-of-tree buildを行う正しい作法が分からずGaucheのソースを眺めていましたが、分からない点が1点ありましたので質問させてください。https://github.com/shirok/Gauche/blob/60f05e59fe8838e0935cbd7e39c4ffc927b8d784/lib/gauche/cgen/precomp.scm#L293-L295 ここの処理で out.c を使っていないので、引数の out.c で指定したパスにCファイルが生成されないと解釈しているのですが、この解釈で合っていますか?
#
手元のプロジェクトのMakefile構成だと https://github.com/shirok/Gauche/blob/60f05e59fe8838e0935cbd7e39c4ffc927b8d784/lib/gauche/package/compile.scm#L100-L103 ここの箇所で「gcc: 致命的エラー: 入力ファイルがありません」のエラーが起こってしまい、なんでだろうと思って色々眺めていました。
2024/05/17 06:27:56 UTCshiro
#
out.cはパラメータcgen-current-unitに束縛される#<cgen-unit>中に保持されて、do-itの中の(cgen-emit-c (cgen-current-unit))でファイルに書き出されます。
#
エラーが起きるのは気になります。こちらで再現できるコード (リポジトリとか) は見られますか?
2024/05/17 12:14:37 UTChnagamin
#
すみません大変恐縮です……ありがとうございます。エラーログは https://github.com/1995hnagamin/cafemielk/blob/9b19ced/doc/chrono/2024/2024-05-17-errlog.md にあります。同リポジトリ 2024/build ブランチの cm-tight/ ディレクトリにコードがあります。
#
ありがとうございます。なるほど、#<cgen-unit>中に保持されているのですね…… cgen を全然分かっていないのでもう少し勉強します。
2024/05/17 16:09:57 UTCshiro
#
PR送っておきました
2024/05/17 17:21:02 UTChnagamin
#
ありがとうございます。今手元に macOS の環境しかないため後で Linux でも確認させてください。
しかし手元だとコンパイルできません…… (spigot-subdirを含め)手元の環境で out-of-tree build に成功したことがなくそもそも僕が何か大きな勘違いをしているかもしれません。
#
ログです https://github.com/1995hnagamin/cafemielk/blob/731904a/doc/chrono/2024/2024-05-18-errlog2.md
2024/05/17 22:09:54 UTCshiro
#
ふーむ。OSXでも試してみます。
#
ああ、確かにエラーになりますね。
2024/05/17 22:17:43 UTCshiro
#
VPATHを見てくれてないな…
2024/05/19 06:52:57 UTCshiro
#
OSXでもspigot-subdirだとちゃんとout-of-tree buildでVPATHみてくれる。違いはどこだ。
2024/05/19 07:01:56 UTCshiro
#
あ、srcdirの置換がおかしい。
#
あれ、再configureしたら直ったぞ。
#
>hnagamin 最新のHEADのGaucheをインストールしてconfigureからやってみてください。srcdirの置換のバグは最近直した覚えがあるので、それ以前のGaucheをインストールした状態でconfigureしたのが残っているとうまくないです。
2024/05/19 09:25:20 UTChnagamin
#
ありがとうございます! HEADビルドしてみます
2024/05/19 11:43:39 UTChnagamin
#
out-of-tree buildが成功しました! 本当に助かりました。ありがとうございます。