picrin/docs/lang.rst

92 lines
5.1 KiB
ReStructuredText
Raw Normal View History

2014-05-21 00:28:29 -04:00
Language
========
2014-06-14 13:27:01 -04:00
Picrin's core language is the R7RS scheme with some powerful extensions. Please visit http://r7rs.org/ for the information of R7RS's design and underlying thoughts.
2014-05-21 00:28:29 -04:00
The REPL
--------
At the REPL start-up time, some usuful built-in libraries listed below will be automatically imported.
2014-05-21 01:00:29 -04:00
- ``(scheme base)``
- ``(scheme load)``
- ``(scheme process-context)``
- ``(scheme write)``
- ``(scheme file)``
- ``(scheme inexact)``
- ``(scheme cxr)``
- ``(scheme lazy)``
- ``(scheme time)``
2014-07-15 05:33:45 -04:00
- ``(scheme case-lambda)``
- ``(scheme read)``
2014-07-27 01:41:44 -04:00
- ``(scheme eval)``
2014-05-25 23:22:42 -04:00
2014-06-14 13:58:22 -04:00
Compliance with R7RS
2014-05-25 23:22:42 -04:00
---------------------
================================================ ========== ==========================================================================================================================
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
2014-06-29 00:58:21 -04:00
4.1.7 Inclusion incomplete ``include-ci``
2014-09-13 03:03:58 -04:00
4.2.1 Conditionals yes
2014-05-25 23:22:42 -04:00
4.2.2 Binding constructs yes
4.2.3 Sequencing yes
4.2.4 Iteration yes
2014-07-27 01:41:44 -04:00
4.2.5 Delayed evaluation yes
2014-05-25 23:22:42 -04:00
4.2.6 Dynamic bindings yes
2014-06-29 04:46:57 -04:00
4.2.7 Exception handling yes ``guard`` syntax.
2014-05-25 23:22:42 -04:00
4.2.8 Quasiquotation yes can be safely nested. TODO: multiple argument for unquote
2014-07-27 01:41:44 -04:00
4.2.9 Case-lambda yes
4.3.1 Bindings constructs for syntactic keywords yes [#]_
2014-05-25 23:22:42 -04:00
4.3.2 Pattern language yes ``syntax-rules``
4.3.3 Signaling errors in macro transformers yes
5.1 Programs yes
2014-07-27 13:03:29 -04:00
5.2 Import declarations yes
2014-05-25 23:22:42 -04:00
5.3.1 Top level definitions yes
2014-09-13 03:03:58 -04:00
5.3.2 Internal definitions yes
2014-05-25 23:22:42 -04:00
5.3.3 Multiple-value definitions yes
2014-07-16 01:30:45 -04:00
5.4 Syntax definitions yes
2014-05-25 23:22:42 -04:00
5.5 Recored-type definitions yes
2014-07-27 01:41:44 -04:00
5.6.1 Library Syntax yes In picrin, libraries can be reopend and can be nested.
2014-05-25 23:22:42 -04:00
5.6.2 Library example N/A
5.7 The REPL yes
2014-07-18 23:27:31 -04:00
6.1 Equivalence predicates yes
2014-05-25 23:22:42 -04:00
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.
2014-07-27 13:03:29 -04:00
6.2.7 Numerical input and output yes
2014-05-25 23:22:42 -04:00
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
2014-07-27 01:41:44 -04:00
6.11 Exceptions yes
6.12 Environments and evaluation yes
2014-05-25 23:22:42 -04:00
6.13.1 Ports yes
2014-05-27 13:36:23 -04:00
6.13.2 Input yes
2014-05-25 23:22:42 -04:00
6.13.3 Output yes
6.14 System interface yes
2014-05-25 23:23:42 -04:00
================================================ ========== ==========================================================================================================================
2014-05-25 23:22:42 -04:00
2014-07-27 01:41:44 -04:00
.. [#] Picrin provides hygienic macros in addition to so-called legacy macro (``define-macro``), such as syntactic closure, explicit renaming macro, and implicit renaming macro.