move 'compliance' section to lang.rst

This commit is contained in:
Yuichi Nishiwaki 2014-05-26 12:22:42 +09:00
parent 6a7f64fc93
commit 61c7f9441e
2 changed files with 68 additions and 66 deletions

View File

@ -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.

View File

@ -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.