On Fri, 7 Sep 2012 07:51:03 +0200
Alexander Burger wrote:
> Hi José,
>
> > Because the world wasn't weird enough already I took the liberty to
>
> Bravo! That's a valid idea ;)
>
>
> Let me suggest two small changes:
>
> > (de prog+ "Prg"
> >(use ("Thunk" "Ret" "L")
> > (setq "Thunk" "Prg" "Ret" NIL)
> > (while
>
> Did you have any special reason for 'use'? Otherwise I would use
> 'let':
>
> (de prog+ "Prg"
>(let ("Thunk" "Prg" "Ret" NIL "L" NIL)
> (while
>
>
> The call to 'seek'
>
> >(seek '[(X) (= (car X) "L")] "Prg")
>
> can in this case be replaced by member:
>
>(member "L" "Prg")
>
> Cheers,
> - Alex
I "picolisped" a bit the functions and came up with this:
(de prog+ "Prg"
(let ("Thunk" "Prg" "Ret" NIL "L" NIL)
(while (setq "Thunk" (catch 'goto (setq "Ret" (run "Thunk")
"Ret" ) )
(de goto (L)
# "Prg" from 'prog+
(throw 'goto (member L "Prg")) )
()
Now goto throws the thunk itself, passing it as a continuation. You can
manually throw any code (even code generated on the fly).
I wonder if there is an use case where this could be actually faster
than other alternatives.
Cheers,
José
--
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe