move 'compliance' section to lang.rst
This commit is contained in:
parent
6a7f64fc93
commit
61c7f9441e
66
README.md
66
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.
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue