picolisp

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/picolisp.git/
Log | Files | Refs | README | LICENSE

commit 6b71c3f1536fdba51ff2b26baf919edeee506b52
parent 2cd0d46e3aa92696567eff424933b228220cf40a
Author: Commit-Bot <unknown>
Date:   Mon, 22 Nov 2010 08:59:21 +0000

Automatic commit from picoLisp.tgz, From: Mon, 22 Nov 2010 08:59:21 GMT
Diffstat:
Mdoc/ref.html | 16+++++++---------
Mdoc/refC.html | 4++--
Mdoc/refY.html | 6+++---
Mersatz/picolisp.jar | 0
Mlib/tags | 24++++++++++++------------
Msrc64/flow.l | 11++++++-----
Msrc64/version.l | 4++--
7 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/doc/ref.html b/doc/ref.html @@ -1121,9 +1121,9 @@ and exit points, and preserve their environment between invocations. functions, and (re)invoked as needed. In this regard coroutines are similar to "continuations" in other languages. -<p>When the tag goes out of scope, the coroutine will be garabage collected. In -cases where this is desired, using a <a href="#transient">transient</a> symbol -for the tag is recommended. +<p>When the tag goes out of scope while it is not actively running, the +coroutine will be garabage collected. In cases where this is desired, using a <a +href="#transient">transient</a> symbol or a number for the tag is recommended. <p>A coroutine is created by calling <code><a href="refC.html#co">co</a></code>. Its <code>prg</code> body will be executed, and unless <code><a @@ -1137,17 +1137,15 @@ and already running - coroutine. <p>A coroutine is stopped and disposed when <p><ul> -<li>it simply falls off the end, +<li>execution falls off the end <li>some other (co)routine calls <code><a href="refC.html#co">co</a></code> with -that tag but without a <code>prg</code> body, - -<li>the tag goes out of scope, so that the garbage collector stops it, +that tag but without a <code>prg</code> body <li>a <code><a href="refT.html#throw">throw</a></code> into another (co)routine -environment is executed, or +environment is executed -<li>an error occurred, and <a href="#errors">error handling</a> was entered. +<li>an error occurred, and <a href="#errors">error handling</a> was entered </ul> diff --git a/doc/refC.html b/doc/refC.html @@ -558,9 +558,9 @@ copied, while atoms are returned unchanged. -> T </code></pre> -<dt><a name="co"><code>(co 'sym [. prg]) -> any</code></a> +<dt><a name="co"><code>(co 'any [. prg]) -> any</code></a> <dd>(64-bit version only) Starts, resumes or stops a <a -href="ref.html#coroutines">coroutine</a> with the tag given by <code>sym</code>. +href="ref.html#coroutines">coroutine</a> with the tag given by <code>any</code>. If <code>prg</code> is not given, a coroutine with that tag will be stopped. Otherwise, if a coroutine running with that tag is found (pointer equality is used for comparison), its execution is resumed. Else a new coroutine with that diff --git a/doc/refY.html b/doc/refY.html @@ -11,11 +11,11 @@ <dl> -<dt><a name="yield"><code>(yield 'any ['sym]) -> any</code></a> +<dt><a name="yield"><code>(yield 'any ['any2]) -> any</code></a> <dd>(64-bit version only) Transfers control from the current <a href="ref.html#coroutines">coroutine</a> back to the caller (when the -<code>sym</code> tag is not given), or to some other coroutine (specified by -<code>sym</code>) to continue execution at the point where that coroutine had +<code>any2</code> tag is not given), or to some other coroutine (specified by +<code>any2</code>) to continue execution at the point where that coroutine had called <code>yield</code> before. In the first case, the value <code>any</code> will be returned from the corresponding <code><a href="refC.html#co">co</a></code> call, in the second case it will be the return diff --git a/ersatz/picolisp.jar b/ersatz/picolisp.jar Binary files differ. diff --git a/lib/tags b/lib/tags @@ -1,5 +1,5 @@ -! (2841 . "@src64/flow.l") -$ (2943 . "@src64/flow.l") +! (2842 . "@src64/flow.l") +$ (2944 . "@src64/flow.l") % (2570 . "@src64/big.l") & (2791 . "@src64/big.l") * (2389 . "@src64/big.l") @@ -46,7 +46,7 @@ bool (1721 . "@src64/flow.l") box (822 . "@src64/flow.l") box? (999 . "@src64/sym.l") by (1547 . "@src64/apply.l") -bye (3422 . "@src64/flow.l") +bye (3423 . "@src64/flow.l") caaaar (271 . "@src64/subr.l") caaadr (288 . "@src64/subr.l") caaar (99 . "@src64/subr.l") @@ -61,7 +61,7 @@ caddar (409 . "@src64/subr.l") cadddr (435 . "@src64/subr.l") caddr (156 . "@src64/subr.l") cadr (45 . "@src64/subr.l") -call (3074 . "@src64/flow.l") +call (3075 . "@src64/flow.l") car (5 . "@src64/subr.l") case (1962 . "@src64/flow.l") catch (2462 . "@src64/flow.l") @@ -114,7 +114,7 @@ diff (2576 . "@src64/subr.l") dir (2800 . "@src64/main.l") dm (543 . "@src64/flow.l") do (2136 . "@src64/flow.l") -e (2904 . "@src64/flow.l") +e (2905 . "@src64/flow.l") echo (4289 . "@src64/io.l") env (625 . "@src64/main.l") eof (3429 . "@src64/io.l") @@ -139,7 +139,7 @@ flip (1686 . "@src64/subr.l") flush (4994 . "@src64/io.l") fold (3343 . "@src64/sym.l") for (2225 . "@src64/flow.l") -fork (3248 . "@src64/flow.l") +fork (3249 . "@src64/flow.l") format (2089 . "@src64/big.l") free (2047 . "@src64/db.l") from (3448 . "@src64/io.l") @@ -166,12 +166,12 @@ inc (2256 . "@src64/big.l") index (2624 . "@src64/subr.l") info (2704 . "@src64/main.l") intern (875 . "@src64/sym.l") -ipid (3193 . "@src64/flow.l") +ipid (3194 . "@src64/flow.l") isa (959 . "@src64/flow.l") job (1426 . "@src64/flow.l") journal (970 . "@src64/db.l") key (3279 . "@src64/io.l") -kill (3225 . "@src64/flow.l") +kill (3226 . "@src64/flow.l") last (2031 . "@src64/subr.l") length (2700 . "@src64/subr.l") let (1476 . "@src64/flow.l") @@ -235,7 +235,7 @@ on (1583 . "@src64/sym.l") onOff (1613 . "@src64/sym.l") one (1646 . "@src64/sym.l") open (4220 . "@src64/io.l") -opid (3209 . "@src64/flow.l") +opid (3210 . "@src64/flow.l") opt (2990 . "@src64/main.l") or (1637 . "@src64/flow.l") out (4114 . "@src64/io.l") @@ -312,13 +312,13 @@ super (1218 . "@src64/flow.l") sym (3910 . "@src64/io.l") sym? (2421 . "@src64/subr.l") sync (3091 . "@src64/io.l") -sys (3045 . "@src64/flow.l") +sys (3046 . "@src64/flow.l") t (1748 . "@src64/flow.l") tail (1898 . "@src64/subr.l") tell (3163 . "@src64/io.l") text (1272 . "@src64/sym.l") throw (2488 . "@src64/flow.l") -tick (3161 . "@src64/flow.l") +tick (3162 . "@src64/flow.l") till (3515 . "@src64/io.l") time (2514 . "@src64/main.l") touch (1049 . "@src64/sym.l") @@ -345,7 +345,7 @@ wr (5119 . "@src64/io.l") xchg (1538 . "@src64/sym.l") xor (1698 . "@src64/flow.l") x| (2871 . "@src64/big.l") -yield (2699 . "@src64/flow.l") +yield (2700 . "@src64/flow.l") yoke (1187 . "@src64/subr.l") zap (1063 . "@src64/sym.l") zero (1631 . "@src64/sym.l") diff --git a/src64/flow.l b/src64/flow.l @@ -1,4 +1,4 @@ -# 12oct10abu +# 22nov10abu # (c) Software Lab. Alexander Burger (code 'redefMsgEC) @@ -2540,11 +2540,12 @@ pop X ret -# (co 'sym [. prg]) -> any +# (co 'any [. prg]) -> any (code 'doCo 2) push X ld X (E CDR) # Get tag - call evSymX_E # Evaluate to a symbol + ld E (X) + eval # Evaluate 'any' atom (X CDR) # 'prg'? if z # Yes push Y @@ -2695,7 +2696,7 @@ pop X ret -# (yield 'any ['sym]) -> any +# (yield 'any ['any2]) -> any (code 'doYield 2) push X push Y @@ -2712,7 +2713,7 @@ link ld Y (Y CDR) # Next arg ld E (Y) - eval # Eval optional 'sym' + eval # Eval optional 'any2' ld Y 0 # Preload "no target" cmp E Nil # Any? if ne # Yes diff --git a/src64/version.l b/src64/version.l @@ -1,6 +1,6 @@ -# 19nov10abu +# 22nov10abu # (c) Software Lab. Alexander Burger -(de *Version 3 0 4 12) +(de *Version 3 0 4 13) # vi:et:ts=3:sw=3