Gauche:R7RS draft1
(2011/04/17 14:16:18 PDT): R7RS draft1 へ対応するためのメモ。
draftはdraftなんで、あせって全部すぐに対応することはしない。やばそうなものについては(use compat.r7rs.draft1) のような別モジュールで提供するかもしれない。
2 Lexical conventions
- シンボル中の \xNN; エスケープ形式のサポート - 要対応。
- シンボルの |foo bar| でのエスケープ - 既対応。 (ただ、'|' がデリミタになるかどうかで揉めるかもしれない。今Gaucheはデリミタだけど、もしそうでない方に転んだら要対応。)
- #!fold-case, #!no-fold-case によるリーダのcase foldingの切り替え - 既対応。
- コメント形式 #;datum, #|block|# - 既対応。
- #n= #n# による共有構造の参照 - 既対応。
4 Expressions
- caseの => 記法 - 既対応。
- letrec* - 要対応 (letrecが多くの場合はletrec*の動作をするが、最適化ルーチンによって順序が変えられてしまう場合がある)
- parameterize - 既対応 (srfi-39)
- guard - 既対応 (ただし、<cond>節の最後の式が、guard自体がtail contextならtail contextで評価される、というふうになっていない、という既知のバグあり)
- case-lambda - 既対応。
- syntax-rules - 要対応 (R5RSから拡張されている部分に未対応)
- syntax-error - 既対応。
5 Definitions
- internal defines - 要対応 (letrec*セマンティクスを満たすようにする必要がある)
- define-record-type - 既対応 (gauche.recordがスーパーセット)
- module - 要対応
- exportについてはrenamingだけ要対応
- importについてはimport setの機能は一通り揃っているので、文法をサポートするだけ
- includeはundocumentedだけど実は対応済。ただ、R7RS draftでは相対パスの扱いがはっきりしてないので変更があったら追従する必要あり。
- cond-expandは既対応
6 Standard procedures
- equal?は循環参照があっても必ず停止しなければならない - 要対応
- +inf.0, -inf.0, +nan.0 - 既対応
- exact-integer? - 要対応
- finite?, infinite?, nan? - 既対応
- floor/, floor-quotient, floor-remainder, ceiling/, ceiling-quotient, ceiling-remainder, truncate/, truncate-quotient, truncate-remainger, round/, round-quotient, round-remainder, euclidian/, euclidean-quotient, euclidean-remainder - 要対応
- rationalize - 要対応 (R5RSでもoptionalだったので、面倒だから対応してなかった)
- exact-integer-sqrt - 既対応
- make-list - 既対応
- list-set! - 要対応
- member, assocのオプショナルなcompare引数 - 既対応 (srfi-1)
- list-copy - 既対応
- char-ci=? etc. - 要対応 (unicode case foldingを真面目に実装しないと)
- char-alphabetic? etc - 要対応 (unicode character propertyを真面目に実装しないと)
- char-ni=? etc. - 要対応 (unicode normalizationを真面目に実装しないと)
- char->integer - 要変更 (native encodingがutf-8でない場合にどうするか)
- char-upcase etc. - 要対応 (unicode case foldingを真面目に実装しないと)
- 文字列中の\xNN;表記 - 要変更 (現在の、不完全文字列中の\xNN表記とぶつかるので何らかの対応が必要)
- string-ci=? etc. - 要対応 (unicode case foldingを真面目に実装しないと)
- string-ni=? etc. - 要対応 (unicode normalizationを真面目に実装しないと)
- string-upcase etc. - 要対応 (unicode case foldingを真面目に実装しないと)
- blob - 要対応 (gauche.uvectorのu8vectorを名前を変えて提供するadapterを書けば良いだけ)
- string-map, string-for-each - 要対応 (srfi-13のstring-map, string-for-eachと非互換!)
- vector-map, vector-for-each - 要対応 (srfi-43のvector-map, vector-for-eachと非互換!)
- make-parameter - 既対応
- with-exception-handler - 既対応
- raise - 既対応
- raise-continuable - 要対応
- error - 既対応
- binary & character ports - 既対応
- call-with-input-file等のfile-spec - 要対応
- character-port?, binary-port? - 要対応
- port-open? - 要対応
- read-u8 - 既対応 (binary.io)
- peek-u8 - 要対応
- u8-ready? - 要対応
- write-u8 - 既対応 (binary.io)
- include - 既対応 (undocumented)
- file-exists? - 既対応
- delete-file - 要対応 (delete-filesならあるが)
- command-line - 要対応
- get-environment-variable, get-environment-variables - 既対応 (srfi-98)
- current-second - 要対応
- current-jiffy - 要対応
- jiffies-per-second - 要対応
Last modified : 2012/02/23 03:16:23 UTC