| In http://www.arclanguage.org/item?id=1263, pc points out that it can often be useful to let the user do things in parallel: for example, it would be nice if airline sites let you do multiple searches in different tabs at the same time. This doesn't work in a pure cookie/session approach... at least not without something in the URL to tell the server which browser tab the request is coming from. This got me to thinking... I can imagine that I'm on a web site, working on putting something together. I get to a certain point, and I'd like to open what I'm working on in multiple tabs so that I can try out different things independently. Rather than my two tabs being a two views of the same thing, instead I want each tab to be a view on its own thing that I can try out modifying in different ways... perhaps to see which one I like better. Here, in this simplistic example, the "thing that I'm working on" is adding items to a list, and the application isn't doing anything more than just showing me the list. By right-clicking on "clone" and selecting "Open Link in New Tab", I get a copy of the list. Adding an item to one list doesn't affect the other list. (def my-page (lst)
(w/link (my-page lst) (pr "clone"))
(br2)
(prn "The list: " lst)
(br2)
(aform [my-page (+ lst (list (arg _ "item")))]
(input "item")
(but "Add")))
(defop page req
(my-page '()))
I don't claim this is particularly deep or anything :-) Nor that it couldn't easily be implemented in other languages. But I have to say I found it nifty that I had an idea for an interaction style and I was able to try it out so easily. |