週刊nmosh - R7RS投票開始 / 数値変換のバグ


wxWidgetsのGraphicsContextを使って絵が出るようになった。これはMacOSならCoreGraphics、Win32ならGDI+、その他ならCairoにマップするベクタ描画I/Fで、wx2.8でも一応使える。wx2.9になると通常の描画I/FであるGC(こちらはWin32のGDIのコピー)からも使えるので、GCにマップしたほうが良かったかな。。

R7RS投票開始

Schemeの次世代規格R7RSの投票が開始された。

R6RSの支持者はいくらか反対票を投じているが、今のところ賛成票の方が多い。5/13まで。
率直に言うとR6RS当時そのまま - 対話不足を感じなくもない。
Schemeの特殊性は言語の素として使われる点にあって、そういう背景を考えるとこの手の作業にあまり強い感心を惹かないのかもしれない。

数値変換のバグ

nmoshのVMがfixnumに収まるbignumをfixnumに正常に変換しないバグを観測している。vectorのindex等はfixnumを要求しているので、正常な値を渡しているつもりでもエラーになってしまう困り物。

      (define (fixnum i) ;; FIXME: VM bug workaround
        (bitwise-ior 0 i))
      (define (op i)
        (set! op-count (+ 1 op-count))
        (put-u8 op-port (fixnum i)))

このバグは、↑のfixnum手続きのように0とorを取ることで回避できる。ASM.jsのようなJavaScriptの型アノテーションみたいだ( http://asmjs.org/spec/latest/#parameter-type-annotations )