lua-users home
lua-l archive

Re: Non Local Exits: Some usage notes

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


Nice notes on the usage of non-local exits. I should go back and re-read
more of the Dylan material sometime.
I will note that the big win in general is using finally to provide an
approach to writing wrappers that doesn't hurt one's head. Contrast:
 function do_with_lock( lock, fn, ... )
 lock:lock()
 return fn( ... )
 finally
 lock:unlock()
 end
(Blocks elided here.)
With what one has to write today:
 function pcall2call( success, ... )
 if success then
 return ...
 else
 error( ..., 0 )
 end
 end
 function unlocker( lock, ... )
 lock:unlock()
 return pcall2call( ... )
 end
 function do_with_lock( lock, fn, ... )
 lock:lock()
 return unlocker( lock, pcall( fn, ... ) ) )
 end
Mark

AltStyle によって変換されたページ (->オリジナル) /