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  |