lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Continuation based behavior of web pages might make sense to a Scheme programmer, but since when did it square with real user expectations or past experience?
 
How many times have you make a money transfer on an online banking page, or submitted a bid on an eBay auction, or sent an email message with web mail, or ordered a book from Amazon?
When you hit the back button, you would never expect a transaction to be undone, because in all experience it never happens that way, because it simply wouldn't make any sense in the real world.

People understand how web servers and transactions work, because they use them every day, and people understand that time moves forward without cause and effect jumping backwards like a Dr. Who time travel epsidoe.

A web server that used continuations in the way people are discussing would violate the principle of least astonishment, and that's simply bad user interface design, no matter how much it resembles a cool programming language's obscure but powerful flow control structure.

http://en.wikipedia.org/wiki/Principle_of_least_astonishment

That is why well written web sites make their pages refresh when you press the back button, and the servers are purposefully programmed not to accept the same form submission twice.
It's standard operating procedure: try it with any online banking site or eBay, and see what happens.
There is no online banking site on earth that will undo a money transfer when you press the back button, and for good reason.

Any web site that did that would astonish and confuse users (if not make them very rich and put the bank out of business ;), because most users aren't scheme programmers, and expect the effects of what they've done to persist, and expect time to move forward without skipping around.

    -Don

Tom Barta wrote:
I know that Seaside does. It uses continuations to 'remember where it was'
when the user backs up through a series of forms. e.g., given code similar to
this: