interesting! i wish algol 68 had had its chance.

On Thu, Dec 20, 2018 at 2:40 PM Bakul Shah <ba...@bitblocks.com> wrote:

> On Thu, 20 Dec 2018 13:13:04 -0800 Michael Jones <michael.jo...@gmail.com>
> wrote:
> >
> > There is an inelegant but highly effective "hack" in GCC/G++ in thuas
> area.
> > Since C/C++ are expression language as Rob put it (e.g. a statement like
> > "3" compiles where in Go it fails with "3 evaluated but not used") GCC
> took
> > this a step further and implemented that the last expression evaluated
> in a
> > block is the value of that block. This makes "x = {if (a>b) then 7 else
> > 2;}" do what "x = (a>b)?7:2" means but allows any and all code in there.
> > Won't work in Go because of "3 evaluated but not used" but I've used it
> > gratefully in macro situations in the past.
>
> Algol-68 allowed this by design. No hack required! The value
> of a sequence of expressions was the last expression. It also
> allowed if and switch expressions. And it allowed much more
> concise alternate syntax for some constructs but with exactly
> the same semantics. Among other things this meant the language
> had to have union types.
>   x := IF cond THEN 1 ELSE "foo" FI
> or
>   x := (cond | 1 | "foo")
> is a perfectly legal expression. So is this:
>   CASE x IN
>     (INT i): foo(i),
>     (STRING s): bar(s),
>     OUT error(x)
>   ESAC
>
> In my view Go could've been more of an expression language
> without losing any of its strong points.
>


-- 

*Michael T. jonesmichael.jo...@gmail.com <michael.jo...@gmail.com>*

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to