Euphoria Wish List




Euphoria, like every other language, is not 100% perfect.

It is impossible to create a language that is 100% perfect because different programmers want different things from the languages they use; which is why programmers are so stubborn about their prefered language being the best.

On the whole, Euphoria is an excellent language. It takes a little while to come to grips with its concept of sequences, atoms and other fundamental types and its overall syntax but, once grasped, it is a very nicely thought out language.

Even so, it doesn't stop the Happy Hippy thinking that there are ways in which he would improve the language ...

Identifier naming

    It should be possible to use characters such as dollar ( $ ) and percent ( % ) within identifier names. This would allow a programmer to identify those variables and so on that store sequences ( or strings ) or integers which would make the transition from BASIC to Euphoria much simpler by allowing statements such as ...

      A$ = "Goodbye World !"
      B$ = A$  &"\n"
      C$ = Left$(A$,4)
      N% = Instr(A$," ")
      

    A strings.e library of string handling functions for the ex-BASIC programmer would be very welcome - Left$(), Right$(), Mid$(), Ucase$(), Lcase$(), Ltrim$(), Rtrim$(), Trim$(), Str$(), Len(), Instr() etc.

Keyboard input handling

    When allow_break(FALSE) has been specified; a Ctrl-C ( or Ctrl-Break ) shouldn't echo a ^C to the screen automatically and the Ctrl-C / Ctrl-Break character ( decimal value 3 - it would be nice if Ctrl-Break returned its own unique value ) should be placed in the internal, run-time, keyboard buffer so it can be extracted by simply using a get_key() function call. This would simplify processing where Ctrl-C is one of the keys that should be handled just like all the others ...

      char = get_key()
      if char = CTRL_BREAK then Abort_Program()
      elsif char = CTRL_A then Add_A_Line()
      elsif char = CTRL_B then GoTo_Beginning_Of_File()
      elsif char = CTRL_C then Clear_Entries()
      elsif ...
      

    The get_key() doesn't handle Ctrl-S and Ctrl-P before MS-DOS gets a chance to respond to these key presses.

    This means that Ctrl-S doesn't always get returned ( it pauses output ) and Ctrl-P can cause a Print Screen that can bring down a PC if a printer isn't actually attached ( due to a nasty MS-DOS feature that doesn't easily allow a Print Screen to be cancelled in the usual Abort, Retry, Fail error handler ). Correcting this problem would be a godsend.

    A keycodes.e file should be included in the installation that defines all the possible keys and their values ( returned by get_key() ) as constant definitions. This would save everyone the effort of trying to work out what values get_key() returns for particular keyboard presses such as Alt-X.

Comment definitions

    The use of double-minus ( -- ) is tolerable for indicating the start of a comment but this is unique to Euphoria. Also allowing comments to start with double-slash ( // ), as with C, C++, Java and JavaScript, would make the transition to Euphoria easier for users of those languages.

    I also like the use semicolons ( ; ) to indicate the start of comments ( and an astrix ( * ) as the first non-white-space character ) - which discloses a lifetime of assembly language programming I suppose.

Abnormal program termination

    When an MS-DOS based Euphoria program terminates abnormally, usually due to some run-time error; it is not uncommon for the screen to be left in some funny mode - no cursor, cursor appears on the wrong line when text editors are later used and so on. It would be nice if the interpretor restored the screen mode to its original format.

Despite these niggles with the implementation; the Happy Hippy is using Euphoria quite happily and has no reservations in recommending Euphoria for general use - it is an amazing language that delivers amazing results.





Site Navigation

  Home Page
  What's New
  Search
  Add Bookmark
  Have Your Say
  Guestbook




First published sometime before Tuesday the 16th of November, 1999
Last upload was on Tuesday the 23rd of September, 2003 at 19:27:26