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.