yes. lisp was early (first?) to support unevaluated arguments via hold and
other mechanisms. quite useful for this situation.

On Thu, Jan 3, 2019 at 3:33 PM Milan Zamazal <mzama...@redhat.com> wrote:

> alanfo <alan.f...@gmail.com> writes:
>
> > Some languages which don't support the conditional operator or if/else
> > expressions have an Iif function (or similar) instead.
> >
> > If generics are added to Go, it might be worth including something like
> > this in the standard library to cut down on boilerplate for simple cases:
> >
> > // in a package called 'gen' say
> > func Iif(type T) (cond bool, t1, t2 T) T {
> >     if cond {
> >         return t1
> >     }
> >     return t2
> > }
> >
> > // usage
> > x := 3
> > ...
> > y := gen.Iif(x > 2, 4, 5) // T inferred to be int, assigns 4 to y
> >
> > You can, of course, do this now with interface{} but it's not type-safe
> and
> > requires a type assertion on assignment.
> >
> > A drawback is that it would require the overhead of a function call
> unless
> > the Go compiler could inline simple stuff such as this.
>
> A worse drawback is that both the alternatives are evaluated, which is a
> problem for all but very simple cases.
>
> > Alan
> >
> > On Wednesday, December 19, 2018 at 8:09:35 PM UTC, Viktor Kojouharov
> wrote:
> >>
> >> Hello,
> >>
> >> I've tried and failed at finding any previous discussion on this topic,
> so
> >> do point me to one if it exists.
> >>
> >> I'm interested to know whether it was considered (I can't imagine that
> it
> >> wasn't) for if and switch statements to be expressions instead, and if
> so,
> >> why were they ultimately left as statements. It seems to me that having
> >> them as expressions will not cause a significant change in how they are
> >> ultimately used, mostly because other languages that do support such
> >> expressions do not exhibit this behaviour either. Nor is such a change
> >> strictly backwards incompatible, since any expression is also
> technically a
> >> statement as well, via the ExpressionStmt grammar rule. Such
> expressions
> >> also cover a simple feature which a lot of people new to the language
> are
> >> looking for, and most of us have abused in other languages - ternary
> >> operators. The Go FAQ states that if-elses are clearer, if longer,
> which I
> >> definitely agree with. Yet it seems that an if expression would retain
> its
> >> readability, if not outright increase it, while allowing for terser
> >> assignments. The reason being that a chunk of repeatable code (for
> example
> >> assigning to the same variable in every logical branch) would be moved
> out
> >> of the whole block, thus highlighting the value.
> >>
> >> What if the spec defines that if all if-else blocks / all switch case
> >> clauses contain only single expression, they would be expressions
> rather
> >> than statements. How would that negatively impact the language, in a
> way
> >> that can't already be reproduced?
> >>
>
> --
> 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.
>


-- 

*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