[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: The subsetting has begun


john cowan list forks
I think we are going off-topic for the list.

> > Throwing it back, so to speak - cool!
> >
> > <snip good stuff/>
> >
> > Thanks for taking the time to write such a detailed reply!
> 
> Wierd languages are my hobby ;-)

Would be mine too, if I had a C/S background. Ever heard of BETA?
http://www.mjolner.com . Pretty much dead by now, but interesting.
 
> > The question is: at what cost does on get efficient exception handling?
> > Are continuation languages slower and/or more complex to implement?
> 
> The main cost is that you can't use a stack, it has to be a linked list 
> instead, with garbage collection.

Looks like you always pay for what you get.

> Well C kind of had a limited form of continuations in setjmp / longjmp... 
> just you could mess the stack up with them. You could only ever jump *up* the 
> stack, never down, so you could use them to escape to an error handler but 
> they couldn't handle such continuation tricks as nondeterminstic algorithms.

Is that legal in C++ too? Never used it - not being a C/C++ specialist.

> Nondeterministic algorithms, I hear you ask? Well...
> 
> Imagine a function like 'square root'. Mathematicall, every number has two 
> square roots; 2*2 = 4, (-2)*(-2)=4, so sqrt(4) = 2 and -2.
> 
> Needless to say, you can't really express that easily in software. You could 
> have sqrt return a list of two numbers, but that's missing the point in a way.
> 
> What you could do, in C for example, is to have the sqrt function call fork() 
> and return a different number in each fork. If this were part of an equation 
> solver, you would have to try both possible return values every time you got 
> to sqrt() or a similar function; some branches would return no solutions and 
> thus would give up, others would yield results.
> 
> But doing it with lots of forks can consume an exponentially growing number 
> of OS resources. What you can do instead is to, every time you encounter a 
> sqrt(), preserve a 'retry continuation' in a global list that, if invoked, 
> will restart execution from the sqrt but return the negative root. Having 
> saved that continuation, return the positive root.
> 
> Then you can define the 'abort' function (called when a line of enquiry 
> fails) to pop the top off of the list of retry continuations and invoke it.
> 
> When the computation returns with an actual value, if there are still untried 
> retry continuations, then there may be more solutions available, so you can 
> output the solution you have found and try another retry.
> 
> In a way, you are modelling the many worlds interpretation of quantum 
> mechanics...

I can see that this make it simpler to iterate over the set of solutions
for your problem. But that may depend on the problem. In other cases
a simple list of (complex number) solutions may be better.

You could probably model this also with classes that have an interator
over a result set, preserving state of which result was last used.
 
> Don't get me started on how different programming languages model time! C has 
> time implicitly handled by an advancing instruction pointer and a mutable 
> world-state, whereas Concurrent Clean programs model time by having a World 
> object and methods such as 'sleep' that accepts a World and a number of 
> seconds, and returns a World like the one passed in except that many seconds 
> have passed...

Reminds me of Simula. Back when I was studying Physics (which I never practised
professionally), I used to spend some time in the library reading through
C/S books and magazines, since somehow that fascinated me.
So, one day I came across a book about Simula, and this was actually
my first real intro into a programming language (except for a basic
Fortran course).

Karl


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.