週刊mosh - 組み込み機器とnmosh / 月刊R7RS

  • nmosh on Kindle2

- 0.2.7の新機能 Portable mode で、キャッシュをhome以外に作ってるのがミソ。
- R6RS test suiteも通る。
というわけでmoshは組み込み機器でも動く時代に。Kindleというか電子書籍端末で動く初のR6RS Schemeだと思う。
nmoshは組み込みのために結構配慮しているので、実際にいくつかの組み込み開発でプロトタイピングのために使われてます。そのせいで急にNetBSDが充実したり。。
今週のmoshはあまり動きなし。そろそろリリース。。?

closeされたIssue

char=? が 1引数を許す問題。他の比較手続きもチェックしたけど、問題があるのはこれだけの模様。

話題

moshの英語MLはけっこう盛り上がってます。。

スクリプトでプロンプトを出したい話。moshはreadであまり熱心にデリミタを扱わないので、EOFが来るまでreadが終端しないという癖がある。

(import (rnrs))

(define (string->datum str)
  (call-with-port (open-string-input-port str) read))

(define (readline)
  (string->datum (get-line (current-input-port))))

(let loop ()
  (let ((datum (readline)))
    (write datum)
    (newline)
    (loop))) 

僕の書いたこのコードはnmoshのREPLからとってきたもので、(行単位で読むことが分かっているなら)READではなくget-lineで一度読むのがミソ。
2つ目のコードはnmosh専用。これはCTRL+キーのような特殊キーを読みたいときに使える。

月刊R7RS

R7RSの気になる議論を取り上げる新コーナー。状況はかなり混沌としていて、二転三転もありそうな雰囲気。

個人的にはこれが一番の爆弾だと考えていて、R7RSの公開MLでは一時期かなり険悪なムードにまでなってしまった。
R7RS draftでは、condやcaseにおける => のような補助キーワードはunboundとするということになったが、これはR6RSと非互換になるし、補助キーワードをrenameすることができなくなってしまう。
nmoshではアノテーションを導入して匿名ライブラリにboundする( http://lists.scheme-reports.org/pipermail/scheme-reports/2011-April/000417.html )方向で対応する方針。要するに扱いが決まるまでは特別扱いする。

Gaucheのshiroさんが提起した( http://lists.scheme-reports.org/pipermail/scheme-reports/2011-April/000518.html )問題。Unicodeに存在しないプロパティを参照する形でchar-numeric?が定義されているので微妙という話。
また、(char-numeric? #\弐)を真にすべきかなど、そもそも文字と数値を関連づける方法として期待していいものかという問題もある。

今のところ、WG2も含めてR7RSではexplicit-renamingマクロだけをlow levelマクロとして標準化しようとしている。R6RSではsyntax-caseという高機能なlow levelマクロが有ったのになぜ無くなるのかという問題。
ここはR7RSで最も政治的なポイントだろう。。

公開MLでは議論されていないが、そろそろRevised Revised Revised Revised Revised Revised Revised Report on the Algorithmic Language Schemeという名称はクールじゃないんじゃないかという議論が提起されている。