home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / object / 4134 < prev    next >
Encoding:
Internet Message Format  |  1992-11-05  |  2.2 KB

  1. Path: sparky!uunet!usc!rpi!psinntp!psinntp!dg-rtp!sheol!throopw
  2. From: throopw@sheol.UUCP (Wayne Throop)
  3. Newsgroups: comp.object
  4. Subject: Re: objects and closures
  5. Message-ID: <720937337@sheol.UUCP>
  6. Date: 05 Nov 92 01:29:17 GMT
  7. References: <1992Oct27.205320.13271@twg.com> <9210302223.AA11001@cs.columbia.edu> <720756315@sheol.UUCP> <Bx5DFt.7z3@dcs.ed.ac.uk> <BEVAN.92Nov3182229@hippo.cs.man.ac.uk>
  8. Lines: 40
  9.  
  10. : From: pdc@dcs.ed.ac.uk (Paul Crowley)
  11. : Message-ID: <Bx5DFt.7z3@dcs.ed.ac.uk>
  12. : I think this is an excellent and thought-provoking analogy.  Objects
  13. : are closures you can keep track of in your head.  This is why I'm not
  14. : clear why you'd want ML-style closures and higher-orderness in an
  15. : object oriented language; it seems contrary to the style of OO
  16. : programming.
  17.  
  18. Well, pursue the analogy.  While is a control flow construct you can
  19. keep track of in your head.  Why would anybody having a full set of
  20. sensible control flow constructs want unrestricted goto?
  21.  
  22. The answer is for some of the things goto does well that nice, clean,
  23. nested control flow constructes don't.  Finite state machines.  Error
  24. exit from inner loops.  Algorithms lifted from Knuth.  And so on and so
  25. on.  Now, you *could* use some yacc-like tool to describe FSMs, and
  26. generate efficient code, and you *could* use some structured error
  27. raising mechanism, and so on and on.  But the primitive is *still*
  28. handy to have around.
  29.  
  30. Specifically, closures can be used for generalized continuation
  31. (such as for error recovery), where you'd be pounding a round
  32. object into a square requirement.
  33.  
  34. Also, Stephen J Bevan notes another reason why you might want the
  35. primitive around in the language:
  36.  
  37. : From: bevan@cs.man.ac.uk (Stephen J Bevan)
  38. : Message-ID: <BEVAN.92Nov3182229@hippo.cs.man.ac.uk>
  39. : You could always use a language which has closure(goto) and lets you
  40. : the _user_ add the syntax necessary to represent object(while) when
  41. : and if they want it.  One example of this would be Scheme using its
  42. : (hygenic) macro system.
  43.  
  44. Yep.  That way, when you wanted a clean error-raising scheme, you
  45. could add it for the local case via goto, and even for the general
  46. case via some throw/catch notion using closures in their guise as
  47. general continuations.
  48. --
  49. Wayne Throop  ...!mcnc!dg-rtp!sheol!throopw
  50.