From 61c7f9441e49d8ba83c7b99e9adbfbd4b990b6d6 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Mon, 26 May 2014 12:22:42 +0900 Subject: [PATCH] move 'compliance' section to lang.rst --- README.md | 66 ------------------------------------------------- docs/lang.rst | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index c70e8bca..4152ea6b 100644 --- a/README.md +++ b/README.md @@ -21,72 +21,6 @@ Picrin is a lightweight scheme implementation intended to comply with full R7RS See http://picrin.readthedocs.org/ -## Compliance with R7RS - -| section | status | comments | -| --- | --- | --- | -| 2.2 Whitespace and comments | yes | | -| 2.3 Other notations | incomplete | #e #i #b #o #d #x | -| 2.4 Datum labels | yes | | -| 3.1 Variables, syntactic keywords, and regions | | | -| 3.2 Disjointness of types | yes | | -| 3.3 External representations | | | -| 3.4 Storage model | yes | | -| 3.5 Proper tail recursion | yes | As the report specifies, `apply`, `call/cc`, and `call-with-values` perform tail calls | -| 4.1.1 Variable references | yes | | -| 4.1.2 Literal expressions | yes | | -| 4.1.3 Procedure calls | yes | In picrin `()` is self-evaluating | -| 4.1.4 Procedures | yes | | -| 4.1.5 Conditionals | yes | In picrin `(if #f #f)` returns `#f` | -| 4.1.6 Assignments | yes | | -| 4.1.7 Inclusion | incomplete | `include-ci`. TODO: Once `read` is implemented rewrite `include` macro with it. | -| 4.2.1 Conditionals | incomplete | TODO: `cond-expand` | -| 4.2.2 Binding constructs | yes | | -| 4.2.3 Sequencing | yes | | -| 4.2.4 Iteration | yes | | -| 4.2.5 Delayed evaluation | N/A | | -| 4.2.6 Dynamic bindings | yes | | -| 4.2.7 Exception handling | no | `guard` syntax. | -| 4.2.8 Quasiquotation | yes | can be safely nested. TODO: multiple argument for unquote | -| 4.2.9 Case-lambda | N/A | | -| 4.3.1 Bindings constructs for syntactic keywords | incomplete | (*1) | -| 4.3.2 Pattern language | yes | `syntax-rules` | -| 4.3.3 Signaling errors in macro transformers | yes | | -| 5.1 Programs | yes | | -| 5.2 Import declarations | incomplete | only simple import declarations, no support for import with renaming. | -| 5.3.1 Top level definitions | yes | | -| 5.3.2 Internal definitions | yes | TODO: interreferential definitions | -| 5.3.3 Multiple-value definitions | yes | | -| 5.4 Syntax definitions | yes | TODO: internal macro definition is not supported. | -| 5.5 Recored-type definitions | yes | | -| 5.6.1 Library Syntax | incomplete | In picrin, libraries can be reopend and can be nested. | -| 5.6.2 Library example | N/A | | -| 5.7 The REPL | yes | | -| 6.1 Equivalence predicates | yes | TODO: equal? must terminate if circular structure is given | -| 6.2.1 Numerical types | yes | picrin has only two types of internal representation of numbers: fixnum and double float. It still comforms the R7RS spec. | -| 6.2.2 Exactness | yes | | -| 6.2.3 Implementation restrictions | yes | | -| 6.2.4 Implementation extensions | yes | | -| 6.2.5 Syntax of numerical constants | yes | | -| 6.2.6 Numerical operations | yes | `denominator`, `numerator`, and `rationalize` are not supported for now. Also, picrin does not provide complex library procedures. | -| 6.2.7 Numerical input and output | incomplete | only partial support supplied. | -| 6.3 Booleans | yes | | -| 6.4 Pairs and lists | yes | `list?` is safe for using against circular list. | -| 6.5 Symbols | yes | | -| 6.6 Characters | yes | | -| 6.7 Strings | yes | | -| 6.8 Vectors | yes | | -| 6.9 Bytevectors | yes | | -| 6.10 Control features | yes | | -| 6.11 Exceptions | yes | `raise-continuable` is not supported | -| 6.12 Environments and evaluation | N/A | | -| 6.13.1 Ports | yes | | -| 6.13.2 Input | incomplete | TODO: binary input | -| 6.13.3 Output | yes | | -| 6.14 System interface | yes | | - -1. Picrin provides hygienic macros in addition to so-called legacy macro (`define-macro`), such as syntactic closure, explicit renaming macro, and implicit renaming macro. As of now let-syntax and letrec-syntax are not provided. - ## Homepage Currently picrin is hosted on Github. You can freely send a bug report or pull-request, and fork the repository. diff --git a/docs/lang.rst b/docs/lang.rst index 7a856a74..9d82f7d5 100644 --- a/docs/lang.rst +++ b/docs/lang.rst @@ -85,3 +85,71 @@ At the REPL start-up time, some usuful built-in libraries listed below will be a - ``(scheme cxr)`` - ``(scheme lazy)`` - ``(scheme time)`` + +Compiliance with R7RS +--------------------- + +================================================ ========== ========================================================================================================================== +section status comments +================================================ ========== ========================================================================================================================== +2.2 Whitespace and comments yes +2.3 Other notations incomplete #e #i #b #o #d #x +2.4 Datum labels yes +3.1 Variables, syntactic keywords, and regions +3.2 Disjointness of types yes +3.3 External representations +3.4 Storage model yes +3.5 Proper tail recursion yes As the report specifies, ``apply``, ``call/cc``, and ``call-with-values`` perform tail calls +4.1.1 Variable references yes +4.1.2 Literal expressions yes +4.1.3 Procedure calls yes In picrin ``()`` is self-evaluating +4.1.4 Procedures yes +4.1.5 Conditionals yes In picrin ``(if #f #f)`` returns ``#f`` +4.1.6 Assignments yes +4.1.7 Inclusion incomplete ``include-ci``. TODO: Once ``read`` is implemented rewrite ``include`` macro with it. +4.2.1 Conditionals incomplete TODO: ``cond-expand`` +4.2.2 Binding constructs yes +4.2.3 Sequencing yes +4.2.4 Iteration yes +4.2.5 Delayed evaluation N/A +4.2.6 Dynamic bindings yes +4.2.7 Exception handling no ``guard`` syntax. +4.2.8 Quasiquotation yes can be safely nested. TODO: multiple argument for unquote +4.2.9 Case-lambda N/A +4.3.1 Bindings constructs for syntactic keywords incomplete [#]_ +4.3.2 Pattern language yes ``syntax-rules`` +4.3.3 Signaling errors in macro transformers yes +5.1 Programs yes +5.2 Import declarations incomplete only simple import declarations, no support for import with renaming. +5.3.1 Top level definitions yes +5.3.2 Internal definitions yes TODO: interreferential definitions +5.3.3 Multiple-value definitions yes +5.4 Syntax definitions yes TODO: internal macro definition is not supported. +5.5 Recored-type definitions yes +5.6.1 Library Syntax incomplete In picrin, libraries can be reopend and can be nested. +5.6.2 Library example N/A +5.7 The REPL yes +6.1 Equivalence predicates yes TODO: equal? must terminate if circular structure is given +6.2.1 Numerical types yes picrin has only two types of internal representation of numbers: fixnum and double float. It still comforms the R7RS spec. +6.2.2 Exactness yes +6.2.3 Implementation restrictions yes +6.2.4 Implementation extensions yes +6.2.5 Syntax of numerical constants yes +6.2.6 Numerical operations yes ``denominator``, ``numerator``, and ``rationalize`` are not supported for now. Also, picrin does not provide complex library procedures. +6.2.7 Numerical input and output incomplete only partial support supplied. +6.3 Booleans yes +6.4 Pairs and lists yes ``list?`` is safe for using against circular list. +6.5 Symbols yes +6.6 Characters yes +6.7 Strings yes +6.8 Vectors yes +6.9 Bytevectors yes +6.10 Control features yes +6.11 Exceptions yes ``raise-continuable`` is not supported +6.12 Environments and evaluation N/A +6.13.1 Ports yes +6.13.2 Input incomplete TODO: binary input +6.13.3 Output yes +6.14 System interface yes + +.. [#] Picrin provides hygienic macros in addition to so-called legacy macro (``define-macro``), such as syntactic closure, explicit renaming macro, and implicit renaming macro. As of now let-syntax and letrec-syntax are not provided.