jrincayc / r7rs-pico-spec Goto Github PK
View Code? Open in Web Editor NEWPico version of revised⁷ report on the algorithmic language scheme
License: Other
Pico version of revised⁷ report on the algorithmic language scheme
License: Other
It is not clear from reading 5.2.2 if the variable is defined in the environment of its evaluation or not.
The section 5.2.1 specifically explains the case for defining recursive lambdas.
Is it possible to do the same for locally defined lambda using define?
Probably yes but it is not clear.
Providing include
allows modularization of Pico programs: in particular, you can load one or more libraries.
chapter 6.2:
Pico Scheme implementations should support integers suf-
ficiently large to calculate the length of any allowable list,
and for binary computers that usually can be satisfied by
signed integers of the same bit length as machine addresses.
Implementations could use pointer tagging techniques.
Also, some rare hardware have different length between pointers and numbers.
In both cases, satisfying the second part of the spec is an issue. I suggest to remove it.
I also suggest to explain a bit more how overflow are treated. There is no error reporting and the numbers are told to be of limited then something as to be told. My suggest? Stay simple: [1] signed integers (no unsigned) [2] explicit it wraps around.
The rewrite for or
is (let ((x <test1>)) (if x x (or <test2> ...)))
If test2 contains x, this can be incorrect. One simple way to fix it (since expressions have no side effects would be to change the expansion to (if <test1> <test1> (or <test2> ...))
The eqv?
procedure is Scheme's identity function, whereas eq?
is basically a speed hack that is allowed to say "I don't know" in more cases. I suggest that you switch Pico-R7RS to providing eqv?
, which will return #t
instead of an unspecified boolean on numbers that are -
.
E[[Δ*]] is incorrect, since Δ* are declarations, so should have U -> U, not U -> E as pointed out by Wolfgang Corcoran-Mathe.
As suggested on scheme chat by @johnwcowan consider adding import.
Bottom Scheme is another subset of R7RS-small that you may want to compare with this spec.
I know Pico isn't supposed to have side effects, but as long as there are no read operations, display
(to stdout only) is harmless and allows people to write programs that generate results other than those that can be produced by the REPL.
There is an interpreter named TinyScheme that implements a subset of R5RS . In order to avoid confusion, this spec should be given a different name. To avoid collisions, check the fairly complete list of Schemes.
Consider adding named let
to the language. It lets you iterate over lists nicely.
As @jobol pointed out in #scheme
the definition for fresh
in expr.tex is not defined clearly since pico scheme doesn't have locations any more.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.