diff options
| author | 2025-08-31 23:11:11 -0400 | |
|---|---|---|
| committer | 2025-08-31 23:11:11 -0400 | |
| commit | 468316bae74c611c15e4d1b719b522672b80cc5c (patch) | |
| tree | d3e1cbd328479d63a78d8bb221bc6fd5c9cbdce6 /README.md | |
| parent | make conditionals procedures (diff) | |
draft of R7RS libraries
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -7,18 +7,23 @@ > > -- Revisedⁿ Reports on the Algorithmic Language Scheme (n ≥ 3, 1986–) -This is a library that exports interfaces similar to the R7RS, except -everything is call-by-need and not call-by-value: there is no need to -explictly use `delay` or `delay-force` (in most scenarios). Procedures -can be written in ways that look almost identical to regular Scheme. The -procedures return promises which can be forced by non-lazy code. Hence -lazy and non-lazy code can co-exist. +HaScheme is a pure, call-by-need dialect of Scheme (R7RS), embedded within +Scheme itself. Procedures in HaScheme can be written in ways that look +identical to regular Scheme. These procedures return promises which can +be forced by non-lazy code. Hence lazy and non-lazy code can co-exist. *Every* procedure in HaScheme is lazy. Values are forced in conditionals, or explicitly using `seq`. This allows for the call-by-value semantics of Scheme to be turned into call-by-need semantics without any syntactic cruft. +Why use this? + +1. To have fun playing around with functional infinite data structures. +2. To embed lazy and pure algorithms into impure Scheme with ease. +3. To show those dirty Haskellers that you don't need no stinkin' + static type system. + ## Fun (or Pain) with Laziness You need to be careful with lazy functions because they can cause |
