Shiro Kawai
shiro****@lava*****
2004年 9月 12日 (日) 19:41:29 JST
少し迷ったのですが、ccスロットから返されるu8vectorは「コピー」 というセマンティクスにしました。すなわち、 (let ((perm (sys-tcgetattr port))) (set! (ref (ref perm 'cc) VEOF) 4) (sys-tcsetattr port perm)) のようにu8vector自身を変更してもその変更は反映されず、 (let* ((perm (sys-tcgetattr port)) (cc (ref perm 'cc))) (set! (ref cc VEOF) 4) (set! (ref perm 'cc) cc) (sys-tcsetattr port perm)) のように変更したu8vectorを明示的にset!してやる必要があります。 低レベルのCの構造体の配列要素をSchemeに見せる手段として、 「uvectorへの変更が直接構造体へ反映される」というセマンティクスが 常に取れないので、中途半端にここだけ高レベルの手段を講じるよりは、 低位の操作を見せた方がよいと判断しました。 --shiro