home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / MacHaskell 2.2 / doc / announcement next >
Encoding:
Text File  |  1994-09-27  |  5.4 KB  |  93 lines  |  [TEXT/ttxt]

  1.  
  2. ********************************************************************
  3. ***  Announcing the Latest and Greatest Release of Yale Haskell  ***
  4. ********************************************************************
  5.  
  6. Yale Haskell 2.2 features a number of new features being proposed in
  7. the forthcoming version of the Haskell Report, 1.3.  In particular,
  8. this system implements the latest version of the new monadic I/O
  9. system.
  10.  
  11. Haskell 1.3 features implemented in this release are:
  12.  
  13. a) Monadic I/O.  Some of the more complex I/O functions are not yet
  14. implemented but most of the proposed I/O system is available.
  15.  
  16. b) Some Prelude changes.  The Maybe and Either types and a number of
  17. other functions have been moved to the Prelude.  The Assoc type has
  18. been removed and replaced by 2-tuples.
  19.  
  20. c) Polymorphic recursion is allowed for functions with explicit sigantures.
  21.  
  22. d) The _ token can be used to denote bottom in expressions.
  23.  
  24. The Yale Haskell system is a fully integrated Haskell programming
  25. environment.  It provides tightly coupled interactive editing,
  26. incremental compilation, and dynamic execution of Haskell programs.
  27. Two major modes of compilation, corresponding to Lisp's traditional
  28. "interpreted" and "compiled" modes, allow one to rapidly develop
  29. software (using the interpreted mode), saving performance gains till
  30. the software has stabilized (using the compilation mode).  Compiled
  31. and interpreted modules may be freely mixed in any combination.
  32.  
  33. Yale Haskell is run using either a command-line interface or as an
  34. inferior process running under the Emacs editor.  Using the Emacs
  35. interface, simple two-keystroke commands evaluate expressions, run
  36. dialogues, compile modules, turn specific compiler diagnostics on and
  37. off, enable and disable various optimizers, etc.  Commands may be
  38. queued up arbitrarily, thus allowing, for example, a compilation to be
  39. running in the background as the editing of a source file continues in
  40. Emacs in the foreground.
  41.  
  42. In addition, to further enhance incremental compilation, a "scratch
  43. pad" may be automatically created for any module.  Such a pad is a
  44. logical extension of the module, in which additional function and
  45. value definitions may be added, but whose evaluation does not result
  46. in recompilation of the module.
  47.  
  48. A tutorial on Haskell is also provided in the Emacs environment.  
  49. It follows the Sigplan Notices Hudak/Fasel "Gentle Introduction"
  50. section-by-section, and encourages user interaction.  This is a very
  51. popular teaching device for novice users.  This has been updated to
  52. include the new I/O system.
  53.  
  54. We also support a Macintosh version of Yale Haskell that includes its
  55. own integrated programming environment, complete with an Emacs-like 
  56. editor, pull-down menus, etc.
  57.  
  58. Yale Haskell is a complete implementation of the Haskell language, but
  59. also contains a number of extensions, including:
  60.  
  61. (1) Haskell programs can call both Lisp and C functions using a
  62.     flexible foreign function interface.
  63.  
  64. (2) Yale Haskell includes a dynamic typing system.  Dynamic typing has
  65.     been used to implement derived instances in a user extensible manner.
  66.  
  67. (3) A complete X window interface, based on the CLX system, is included.
  68.  
  69. (4) A number of annotations are available for controlling the optimizer,
  70.     including those for specifying both function and data constructor
  71.     strictness properties, "inlining" functions, and specializing 
  72.     over-loaded functions.  Many standard prelude functions have been
  73.     specialized for better performance using these annotations.
  74.  
  75. (5) Separate compilation (including mutually recursive modules) is
  76.     supported using a notion of a UNIT file, which is a kind of localized
  77.     makefile that tells the compiler about compiler options and
  78.     logical dependencies amongst program files.
  79.  
  80. Performance of Yale Haskell's compiled code has been improved
  81. considerably over previous releases.  Although still not as good as
  82. the Glasgow and Chalmers compilers, the flexibility afforded by the
  83. features described earlier makes Yale Haskell a good choice for large
  84. systems development.  For some idea of performance, Hartel's latest
  85. "Nuc" benchmark runs at about the same speed under both Yale Haskell
  86. and hbc.  (Our experiments suggest, however, that Yale Haskell's
  87. compiled code is on average about 3 times slower than hbc.)
  88.  
  89. The Yale Haskell systems is available on a number of popular systems;
  90. binaries are provided for Sun/Sparc and Macintosh, but it is possible
  91. to build the system on virtually any system that runs one of a number
  92. of Common Lisp implementations.  We do NOT support either akcl (gcl)
  93. or CLisp; these systems