Language¶
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.
The REPL¶
At the REPL start-up time, some usuful built-in libraries listed below will be automatically imported.
(scheme base)
(scheme load)
(scheme process-context)
(scheme write)
(scheme file)
(scheme inexact)
(scheme cxr)
(scheme lazy)
(scheme time)
(scheme case-lambda)
(scheme read)
(scheme eval)
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, |
4.1.1 Variable references |
yes |
|
4.1.2 Literal expressions |
yes |
|
4.1.3 Procedure calls |
yes |
In picrin |
4.1.4 Procedures |
yes |
|
4.1.5 Conditionals |
yes |
In picrin |
4.1.6 Assignments |
yes |
|
4.1.7 Inclusion |
incomplete |
|
4.2.1 Conditionals |
yes |
|
4.2.2 Binding constructs |
yes |
|
4.2.3 Sequencing |
yes |
|
4.2.4 Iteration |
yes |
|
4.2.5 Delayed evaluation |
yes |
|
4.2.6 Dynamic bindings |
yes |
|
4.2.7 Exception handling |
yes |
|
4.2.8 Quasiquotation |
yes |
can be safely nested. TODO: multiple argument for unquote |
4.2.9 Case-lambda |
yes |
|
4.3.1 Bindings constructs for syntactic keywords |
yes [1] |
|
4.3.2 Pattern language |
yes |
|
4.3.3 Signaling errors in macro transformers |
yes |
|
5.1 Programs |
yes |
|
5.2 Import declarations |
yes |
|
5.3.1 Top level definitions |
yes |
|
5.3.2 Internal definitions |
yes |
|
5.3.3 Multiple-value definitions |
yes |
|
5.4 Syntax definitions |
yes |
|
5.5 Recored-type definitions |
yes |
|
5.6.1 Library Syntax |
yes |
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 |
|
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 |
|
6.2.7 Numerical input and output |
yes |
|
6.3 Booleans |
yes |
|
6.4 Pairs and lists |
yes |
|
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 |
|
6.12 Environments and evaluation |
yes |
|
6.13.1 Ports |
yes |
|
6.13.2 Input |
yes |
|
6.13.3 Output |
yes |
|
6.14 System interface |
yes |