This is F-operator.egg.info, produced by makeinfo version 4.7 from
eggdoc-output.texi.

INFO-DIR-SECTION The Algorithmic Language Scheme
START-INFO-DIR-ENTRY
* F-operator.egg: (F-operator.egg).		Shift/Reset Control Operators
END-INFO-DIR-ENTRY


File: F-operator.egg.info,  Node: Top,  Next: About this egg,  Up: (dir)

F-operator egg
**************

Shift/Reset Control Operators

Written by Kon Lovett (mailto:klovett@pacbell.net)

   This manual corresponds to version 0.6 of the F-operator extension
library for Chicken Scheme.

* Menu:

* About this egg::
* Documentation::
* Issues::
* Examples::
* License::
* Index::


File: F-operator.egg.info,  Node: About this egg,  Next: Documentation,  Prev: Top,  Up: Top

1 About this egg
****************

* Menu:

* Version history::
* Requirements::


File: F-operator.egg.info,  Node: Version history,  Next: Requirements,  Up: About this egg

1.1 Version history
===================

`0.6'
     Exports

`0.5'
     Rename *v *-values

`0.4'
     Rename H datatype

`0.3'
     %shift/%reset, %bshift/%breset, bug fix bshiftv

`0.2'
     shiftv/resetv, bshiftv/bresetv

`0.1'
     Initial release


File: F-operator.egg.info,  Node: Requirements,  Prev: Version history,  Up: About this egg

1.2 Requirements
================

This egg requires the following extensions:

   `datatype', `Chicken 2.310+'


File: F-operator.egg.info,  Node: Documentation,  Next: Issues,  Prev: About this egg,  Up: Top

2 Documentation
***************

The static delimited continuation operators shift and reset.

* Menu:

* Shift/Reset - Dynamically scoped shift/reset::
* BShift/BReset - Statically scoped shift/reset::
* GShift/GReset - Generalized shift/reset::


File: F-operator.egg.info,  Node: Shift/Reset - Dynamically scoped shift/reset,  Next: BShift/BReset - Statically scoped shift/reset,  Up: Documentation

2.1 Shift/Reset - Dynamically scoped shift/reset
================================================


(require-extension shift-reset)

A "stuck on control" situation, a 'shift' without an 				enclosing 'reset',
is an error.

 -- macro: %reset
          (%reset EXPRESSION ...)

     Evaluate the body `EXPRESSION ...' with a 					delimited
     continuation. The body will contain one or more 					instances of
     `(%shift ...)'.

     Any use of `(dynamic-wind ...)' within the 					dynamic scope of the
     partial continuation will be *ignored*!

 -- macro: %shift
          (%shift PC-TAG EXPRESSION)

     Within the scope of `EXPRESSION' `PC-TAG' is bound to the reified
     partial continuation delimited by 					the enclosing `(%reset ...)'.
     Provide a value to the 					partial continuation using the form
     `(PC-TAG 					<something>)'.

 -- macro: reset
          (reset EXPRESSION ...)

     Evaluate the body `EXPRESSION ...' with a 					delimited
     continuation. The body will contain one or more 					instances of
     `(shift ...)'.

 -- macro: shift
          (shift PC-TAG EXPRESSION)

     Within the scope of `EXPRESSION' `PC-TAG' is bound to the reified
     partial continuation delimited by 					the enclosing `(reset ...)'.
     Provide a value to the 					partial continuation using the form
     `(PC-TAG 					<something>)'.

 -- macro: reset-values
          (reset-values EXPRESSION ...)

     Multiple value return version of `(reset ...)'.  					The body will
     contain one or more instances of `(shift-values ...)'.

 -- macro: shift-values
          (shift-values PC-TAG EXPRESSION)

     Multiple value return version of `(shift ...)'.  					Provide a value
     to the partial continuation using the form `(PC-TAG <something>
     ...)'.


File: F-operator.egg.info,  Node: BShift/BReset - Statically scoped shift/reset,  Next: GShift/GReset - Generalized shift/reset,  Prev: Shift/Reset - Dynamically scoped shift/reset,  Up: Documentation

2.2 BShift/BReset - Statically scoped shift/reset
=================================================


(require-extension bshift-breset)

Invalid delimited continuations, what `RC-TAG' 				below
represents, and "stuck on control" will generate an 				error.

 -- macro: %breset
          (%breset RC-TAG EXPRESSION ...)

     Evaluate the body `EXPRESSION ...' with a 					delimited
     continuation named `RC-TAG'. The body will 					contain one or more
     instances of `(%bshift RC-TAG 					...)'.

     Any use of `(dynamic-wind ...)' within the 					dynamic scope of the
     partial continuation will be *ignored*!

 -- macro: %bshift
          (%bshift RC-TAG PC-TAG EXPRESSION)

     Within the scope of `EXPRESSION' `PC-TAG' is bound to the reified
     partial continuation delimited by 					the enclosing `(%breset RC-TAG
     ...)'. Provide a 					value to the partial continuation using the form
     `(PC-TAG <something>)'.

 -- macro: breset
          (breset RC-TAG EXPRESSION ...)

     Evaluate the body `EXPRESSION ...' with a 					delimited
     continuation named `RC-TAG'. The body will 					contain one or more
     instances of `(bshift RC-TAG 					...)'.

 -- macro: bshift
          (bshift RC-TAG PC-TAG EXPRESSION)

     Within the scope of `EXPRESSION' `PC-TAG' is bound to the reified
     partial continuation delimited by 					the enclosing `(breset RC-TAG
     ...)'. Provide a 					value to the partial continuation using the form
     `(PC-TAG <something>)'.

 -- macro: breset-values
          (breset-values RC-TAG EXPRESSION ...)

     Multiple value return version of `(breset ...)'. The body will
     contain one or more instances of `(bshift-values RC-TAG ...)'.

 -- macro: bshift-values
          (bshift-values RC-TAG PC-TAG EXPRESSION)

     Multiple value return version of `(bshift ...)'. Provide a value
     to the partial continuation using the form 					`(PC-TAG <something>
     ...)'.

 -- macro: range
          (range RC-TAG FROM VALUE STEP TO?)

     The value of the delimited continuation `' ranges 					over the set of
     values specified by the state generation 					procedure suite.
     For use with `(breset ...)'.

    `FROM'
          Zero argument procedure, returning the initial 							state.

    `VALUE'
          Single argument procedure, of the state, returning the 							value
          of the state.

    `STEP'
          Single argument procedure, of the state, returning the 							next
          state.

    `TO?'
          Single argument procedure, of the state, returning `#t' when
          the range is complete.

 -- macro: range
          (range RC-TAG FROM [STEP] TO)

     The value of the delimited continuation `' ranges 					over the number
     interval [`FROM'  `TO'], by 					`STEP'. The increment is 1 when
     missing. For use with 					`(breset ...)'.

 -- macro: %range
          (%range RC-TAG FROM VALUE STEP TO?)

     Version of `(range ...)' for use with `(%breset ...)'.

 -- macro: %range
          (%range RC-TAG FROM [STEP] TO)

     Version of `(range ...)' for use with `(%breset ...)'.


File: F-operator.egg.info,  Node: GShift/GReset - Generalized shift/reset,  Prev: BShift/BReset - Statically scoped shift/reset,  Up: Documentation

2.3 GShift/GReset - Generalized shift/reset
===========================================


(require-extension gshift-greset)

The generalized shift and reset operator family from How to remove a
dynamic prompt: static and dynamic delimited continuation operators are
equally expressible
(http://www.cs.indiana.edu/cgi-bin/techreports/TRNNN.cgi?trnum=TR611).

 -- macro: greset
          (greset HR E)

     Reset parameterized by the H Reset procedure `HR'.

 -- macro: gshift
          (gshift HS F E)

     Shift parameterized by the H Shift procedure `HS'.

 -- procedure: hr-stop
          (hr-stop V)

     H Reset Stop.

 -- procedure: hs-stop
          (hs-stop V)

     H Shift Stop.

 -- procedure: hr-prop
          (hr-prop V)

     H Reset Propagate.

 -- procedure: hs-prop
          (hs-prop V)

     H Shift Propagate.

 -- procedure: H
          (H F X)

     Returns the composition of `F' and `X' 					as an H-datatype.

 -- procedure: HV
          (HV V)

     Returns the value of `V' as an H-datatype.

 -- procedure: H?
          (H? OBJECT)

     Is `OBJECT' an H-datatype?

 -- macro: case-H
          (case-H E ((F X) ON-H-EXPR) (V ON-V-EXPR))

     Deconstructs the H-datatype `E', binding `F' & `X' for an
     evaluation of the `ON-H-EXPR' and `V' for an evaluation of the
     `ON-V-EXPR'.


File: F-operator.egg.info,  Node: Issues,  Next: Examples,  Prev: Documentation,  Up: Top

3 Issues
********

Not a direct implementation of partial continuations.  			Simulated using
full continuations.

   No multiple valued generalized shift/reset.


File: F-operator.egg.info,  Node: Examples,  Next: License,  Prev: Issues,  Up: Top

4 Examples
**********



;;
;; See "F-operator-test.scm" in the unpacked egg for more examples.
;;


File: F-operator.egg.info,  Node: License,  Next: Index,  Prev: Examples,  Up: Top

5 License
*********


Copyright (c) 2006, Kon Lovett.  All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the Software),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED ASIS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

Does not supercede any restrictions found in the source code.


File: F-operator.egg.info,  Node: Index,  Prev: License,  Up: Top

Index
*****

 [index ]
* Menu:

* %breset:                               BShift/BReset - Statically scoped shift/reset.
                                                               (line 13)
* %bshift:                               BShift/BReset - Statically scoped shift/reset.
                                                               (line 23)
* %range:                                BShift/BReset - Statically scoped shift/reset.
                                                               (line 88)
* %reset:                                Shift/Reset - Dynamically scoped shift/reset.
                                                               (line 13)
* %shift:                                Shift/Reset - Dynamically scoped shift/reset.
                                                               (line 23)
* breset:                                BShift/BReset - Statically scoped shift/reset.
                                                               (line 31)
* breset-values:                         BShift/BReset - Statically scoped shift/reset.
                                                               (line 46)
* bshift:                                BShift/BReset - Statically scoped shift/reset.
                                                               (line 38)
* bshift-values:                         BShift/BReset - Statically scoped shift/reset.
                                                               (line 52)
* case-H:                                GShift/GReset - Generalized shift/reset.
                                                               (line 60)
* greset:                                GShift/GReset - Generalized shift/reset.
                                                               (line 15)
* gshift:                                GShift/GReset - Generalized shift/reset.
                                                               (line 20)
* H:                                     GShift/GReset - Generalized shift/reset.
                                                               (line 45)
* H?:                                    GShift/GReset - Generalized shift/reset.
                                                               (line 55)
* hr-prop:                               GShift/GReset - Generalized shift/reset.
                                                               (line 35)
* hr-stop:                               GShift/GReset - Generalized shift/reset.
                                                               (line 25)
* hs-prop:                               GShift/GReset - Generalized shift/reset.
                                                               (line 40)
* hs-stop:                               GShift/GReset - Generalized shift/reset.
                                                               (line 30)
* HV:                                    GShift/GReset - Generalized shift/reset.
                                                               (line 50)
* range:                                 BShift/BReset - Statically scoped shift/reset.
                                                               (line 59)
* reset:                                 Shift/Reset - Dynamically scoped shift/reset.
                                                               (line 31)
* reset-values:                          Shift/Reset - Dynamically scoped shift/reset.
                                                               (line 46)
* shift:                                 Shift/Reset - Dynamically scoped shift/reset.
                                                               (line 38)
* shift-values:                          Shift/Reset - Dynamically scoped shift/reset.
                                                               (line 52)



Tag Table:
Node: Top245
Node: About this egg627
Node: Version history805
Node: Requirements1153
Node: Documentation1361
Node: Shift/Reset - Dynamically scoped shift/reset1708
Node: BShift/BReset - Statically scoped shift/reset3651
Node: GShift/GReset - Generalized shift/reset6957
Node: Issues8427
Node: Examples8682
Node: License8869
Node: Index10114

End Tag Table
