Changes between Initial Version and Version 1 of WG1Ballot7


Ignore:
Timestamp:
11/26/12 07:42:19 (4 years ago)
Author:
alexshinn
Comment:

archiving seventh ballot

Legend:

Unmodified
Added
Removed
Modified
  • WG1Ballot7

    v1 v1  
     1= Instructions = 
     2 
     3    * You may list as many of the options as you want in order of preference. 
     4    * Options are comma-delimited (ignoring space) and case-insensitive. 
     5    * You can pipe-delimit (|) options you want to give equal weight to. 
     6    * You may write in your own option if you announce it to the list first. 
     7    * You may specify a variant with option/variant, for example srfi-1/module to vote for srfi-1 but clarify it should be in a separate module. Please also include the srfi-1 option in this case. 
     8    * You can write a free-form rationale after the "preferences" line, 
     9    * module means "yes, but I want it in a separate module", 
     10    * wg2 means "no, but I think it should go in WG2". 
     11    * undecided means I want to discuss this issue further. 
     12    * Abstain on any item by leaving the preferences blank.  
     13 
     14= WG1 Ballot Items To Finalize By Sep. 18 = 
     15 
     16== WG1 - Core == 
     17 
     18=== #121 The semantics of expt for zero bases has been refined === 
     19 
     20The R5RS definition of expt is: 
     21 
     22{{{ 
     23 -- procedure: expt z1 z2 
     24     Returns Z1 raised to the power Z2.  For z_1 ~= 0 
     25 
     26                          z_1^z_2 = e^z_2 log z_1 
     27 
     28     0^z is 1 if z = 0 and 0 otherwise. 
     29}}} 
     30 
     31however exponents with negative real parts are undefined. 
     32R6RS attempted to clarify this with: 
     33 
     34{{{ 
     35     0.0^z is 1.0 if z = 0.0, and 0.0 if (real-part z) is positive. 
     36     For other cases in which the first argument is zero, either 
     37     an error is signalled or an unspecified number is returned. 
     38}}} 
     39 
     40(Ignore the change in exactness, which was strictly editorial 
     41and the examples clarify that the rules ignore exactness.) 
     42 
     43This is unique in all the reports of a result either 
     44signalling an error or returning a value.  The motivation 
     45for this was because R6RS consistently removed uses of the 
     46"is an error" terminology which would more naturally fit 
     47this situation. 
     48 
     49An alternative, `r5rs-error`, is to restore the "is an error" 
     50text since we are not avoiding this in R7RS: 
     51 
     52{{{ 
     53     The value of 0^z is 1 if (zero? z), 0 if (real-part z) 
     54     is positive, and an error otherwise.  Similarly for 0.0^z, 
     55     with inexact results. 
     56}}} 
     57 
     58The `/real` variant restricts the domain for the zero 
     59base exception to the real numbers.  This is because 
     600^z^ is mathematically undefined for non-real z, and 
     61implementations do not agree on the result. 
     62 
     63  * '''Options:''' r5rs, r5rs-error, r5rs-error/real, r6rs, r6rs/real, undecided 
     64  * '''Default:''' r6rs 
     65  * '''Preferences:'''  
     66 
     67=== #472 clarify semantics of non-library library declarations === 
     68 
     69In items #91, #148 and #150 we voted to allow the 
     70use of `include`, `include-ci` and `cond-expand` 
     71at the "top-level" respectively, but there remains 
     72some confusion as to their semantics. 
     73 
     74Here "top-level" refers to repl and program body 
     75top-levels, but not library bodies. 
     76 
     77One interpretation is that these behave like library 
     78declarations, and can expand into `import` forms. 
     79In this case, for a purely static implementation of 
     80R7RS libraries, they must first be statically scanned 
     81from all top-level forms.  They cannot be used 
     82outside the top-level, and are not even available 
     83as bindings otherwise.  This is the `declaration` 
     84proposal. 
     85 
     86Another interpretation is that they are just normal 
     87macros with the obvious definitions (cond-expand 
     88in terms of the output of the `features` macro), 
     89are available in the `(scheme base)` library, and 
     90consequently can't be used to expand into `import` 
     91since imports have already been resolved.  This is 
     92the `syntax` proposal. 
     93 
     94Alternately, we could provide `both`.  If you think 
     95this is all too confusing you could also vote `remove`, 
     96to drop these extensions. 
     97 
     98  * '''Options:''' declaration, syntax, both, remove 
     99  * '''Default:'''  
     100  * '''Preferences:'''  
     101 
     102=== #473 library declaration locations in top-level === 
     103 
     104R6RS allows only a single library declaration, `import`, 
     105at the beginning of a program body, and this must 
     106contain all imported libraries. 
     107 
     108Pending the result of ticket #472 we may also allow 
     109`include(-ci)` and `cond-expand` to expand into 
     110imports, and so the single form restriction would not 
     111make sense.  However, it would be reasonable to 
     112restrict all library declarations to the beginning of 
     113a program - the first non-declaration would begin 
     114the real body.  This is the `beginning-only` option. 
     115 
     116The advantage of the `r6rs` proposal is that it would 
     117not require any changes in existing R6RS program 
     118loading implementations to support.  If the result of 
     119ticket #472 indicates multiple declaration types are 
     120available this option would automatically become 
     121invalid, so you don't need to vote against it on those 
     122grounds. 
     123 
     124The advantage of the `beginning-only` option is 
     125that it becomes possible to statically determine 
     126all program imports without expansion, which was 
     127the primary motivation of a static library system. 
     128 
     129The final alternative is `any-top-level`, which 
     130allows these forms anywhere at the top-level, 
     131possibly interspersed with definitions.  The advantage 
     132of this is that you can cut&paste repl sessions 
     133(for which interspersed imports are always allowed) 
     134as a program.  The disadvantage is that programs 
     135can no longer be resolved separately from expansion. 
     136 
     137  * '''Options:''' r6rs, beginning-only, any-top-level 
     138  * '''Default:'''  
     139  * '''Preferences:'''  
     140 
     141=== #405 Retract language requiring force to accept non-promises === 
     142 
     143#405 lumped together several issues, one of which was a requirement 
     144(as opposed to an option) to make `force` applied to a non-promise 
     145return its argument, as opposed to it being an error.  Thus, it would 
     146require `(force 2) => 2`.  However, R6RS 
     147requires `(force 2)` to signal an error, and many non-R6RS Schemes also 
     148signal an error (see ForceNonPromise for details).  These facts were not 
     149considered at the time. 
     150 
     151Vote `retain` to retain this requirement, or `retract` to retract it 
     152and leave the result of `(force 2)` implementation-dependent. 
     153 
     154  * '''Options:''' retain, retract 
     155  * '''Default:''' retain 
     156  * '''Preferences:'''