R.J.Hare@edinburgh.ac.uk (02/26/91)
Thanks to those who replied. The method involving paired tests and operations seems an intersting idea, I shall certainly try it out when I get a chance. RGs comments on the use of if statements highlight the 'problem'. If I do if expr1 then ... if expr2 then ... if expr3 then ... obviously with varied 'expr's, I could have more than one block of code being executed when I only want one. The alternative: if expr1 then ... else if expr2 then ... else if expr3 then ... else ... is fine but awful hard to read (which is the part I am unhappy about). What is really needed is something like the Fortran ELSEIF construct: IF (test1) THEN . ELSEIF (test2) THEN . ELSEIF (test3) THEN . ELSE . ENDIF which is only a case statement with a different hat on. Is there such a thing in Icon (ie: have I missed it?). Should there be? Roger Hare.
wgg@CS.WASHINGTON.EDU (William Griswold) (02/27/91)
No, there is no ELSEIF in Icon. However, I indent my IF THEN ELSE's differently to allow a more tabular appearance: if t1 then e1 else if t2 then e2 else if t3 then e3 else e4 I don't find this confusing to interpret at all. bill
talmage@luvthang.aquin.ori-cal.COM (David W. Talmage) (02/27/91)
:is fine but awful hard to read (which is the part I am unhappy about). What is :really needed is something like the Fortran ELSEIF construct: : :IF (test1) THEN : . :ELSEIF (test2) THEN : . :ELSEIF (test3) THEN : . :ELSE : . :ENDIF : :which is only a case statement with a different hat on. How about using ipp, the Icon Pre-Processor that comes with the Icon Program Library? You could do something like this: $define IF(x) if x $define THEN { $define ELSEIF(x) } else if (x) { $define ELSE } { $define ENDIF } IF (test1) THEN . ELSEIF (test2) THEN . ELSEIF (test3) THEN . ELSE . ENDIF ----------------------------------------------------------------------------- David W. Talmage (talmage@luvthang.aquin.ori-cal.com) "I need fifty dollars to make you hollar. I get paid to run this luvthang."