GithubHelp home page GithubHelp logo

jrincayc / r7rs-pico-spec Goto Github PK

View Code? Open in Web Editor NEW
29.0 29.0 1.0 237 KB

Pico version of revised⁷ report on the algorithmic language scheme

License: Other

Makefile 1.08% TeX 95.99% Perl 0.89% Scheme 2.03%

r7rs-pico-spec's People

Contributors

jrincayc avatar omasanori avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

alxbnct

r7rs-pico-spec's Issues

clarify use of define in internal definitions

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.

include

Providing include allows modularization of Pico programs: in particular, you can load one or more libraries.

improve number specification

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.

non hygienic rewrite for or

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> ...))

eqv? instead of eq?

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 -.

Fix tiedecs in semantics

E[[Δ*]] is incorrect, since Δ* are declarations, so should have U -> U, not U -> E as pointed out by Wolfgang Corcoran-Mathe.

display

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.

named let

Consider adding named let to the language. It lets you iterate over lists nicely.

Check lamda definition

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.