Re: [vote] Opinions about conditional built-in names?

Woonsan Ko <[email protected]> Fri, 05 Jun 2015 09:53:53 -0400
Newsgroups gmane.comp.web.freemarker.devel
Message-ID <[email protected]>
+1 for: ?thenElse / ?then_else

Just changed my mind. It seems clearer than "then".

Woonsan

On 6/5/15 9:49 AM, Raymond Auge wrote:
> +1 for: ?thenElse / ?then_else
> =

> =

> =

> On Fri, Jun 5, 2015 at 2:31 AM, Daniel Dekany <[email protected]
> <mailto:[email protected]>> wrote:
> =

>     For now I have renamed
> =

>       exp?choose(whenTrue, whenFalse)
> =

>     to
> =

>       exp?then(whenTrue, whenFalse)
> =

>     because this time that was the most popular option (last year it was
>     ?choose for some reason). I still wonder if we should sacrifice some
>     terseness for being more understandable with:
> =

>       exp?then_else(whenTrue, whenFalse).
> =

>     If you hate to type "_", take into account that in 2.3.23 you can
>     already write templates in camel case, which will be probably the
>     recommended convention sooner or later. Then you have:
>     exp?thenElse(whenTrue, whenFalse)
> =

>     Opinions?
> =

>     --
>     Thanks,
>      Daniel Dekany
> =

> =

>     Wednesday, June 3, 2015, 12:58:56 AM, Daniel Dekany wrote:
> =

>     > Wednesday, June 3, 2015, 12:00:09 AM, Jaime Garza wrote:
>     >
>     >> thenElse is not in the style of other composite words for
>     >> built-ins, like cap_first, right? The style dictates ?then_else
>     >
>     > Yes, I meant then_else. (Or... in fact, in 2.3.23 you can use camel
>     > case as well, but then you need to use camel case for everything
>     > that's defined by Freemarker.)
>     >
>     >> Personally I like boolean?if(true-expr, false-expr)
>     >
>     > So my concern with ?if is this that loggedIn?if(user.name
>     <http://user.name>, "unknown")
>     > can be easily misread like this, as you read it left-to-right: (We
>     > are) logged in IF user.name <http://user.name> is "unknown". At
>     last the "logged in IF
>     > user.name <http://user.name>" part is especially easy to read into
>     it, and is already the
>     > opposite of what the expression means (IF logged in then user.name
>     <http://user.name>).
>     >
>     >> Very concise.
>     >>
>     >> Jaime Garza
>     >>
>     >> -----Original Message-----
>     >> From: Daniel Dekany [mailto:[email protected]
>     <mailto:[email protected]>]
>     >> Sent: Tuesday, June 02, 2015 2:20 PM
>     >> To: FreeMarker-devel
>     >> Subject: Re: [Freemarker-devel] [vote] Opinions about conditional
>     built-in names?
>     >>
>     >> Tuesday, June 2, 2015, 1:54:24 PM, Raymond Auge wrote:
>     >>
>     >>> Having reviewed those and due to my preferring readability over
>     >>> anything else, I would still lean toward:
>     >>>
>     >>> someBoolean?then(whenTrue, whenFalse)
>     >>>
>     >>> But would actually prefer the more expressive:
>     >>>
>     >>> someBoolean?ifelse(whenTrue, whenFalse)
>     >>
>     >> Then rather someBoolean?thenElse(whenTrue, whenFalse), isn't it?
>     >> Though that even longer...
>     >>
>     >> What should I notice in that Wikipedia article?
>     >>
>     >> --
>     >> Thanks,
>     >>  Daniel Dekany
>     >>
>     >>
>     >>> I'd learn to deal with the first of course.
>     >>>
>     >>> - Ray
>     >>>
>     >>> On Tue, Jun 2, 2015 at 7:47 AM, Raymond Auge
>     <[email protected] <mailto:[email protected]>> wrote:
>     >>> I lean to "then".
>     >>>
>     >>> But before deciding maybe a quick look over these:
>     http://en.wikipedia.org/wiki/%3F:
>     >>>
>     >>> - Ray
>     >>>
>     >>> On Tue, Jun 2, 2015 at 3:01 AM, Daniel Dekany
>     <[email protected] <mailto:[email protected]>> wrote:
>     >>> OK, so that's like a vote for "then". Anyone else has an opinion?=
 Or
>     >>> even just a vote on the name you prefer?
>     >>>
>     >>> someBoolean?then(whenTrue, whenFalse)someBoolean?then(whenTrue,
>     whenFalse)
>     >>> or
>     >>> someBoolean?choose(whenTrue, whenFalse)
>     >>> or
>     >>> something else?
>     >>>
>     >>> --
>     >>> Thanks,
>     >>>  Daniel Dekany
>     >>>
>     >>>
>     >>> Monday, June 1, 2015, 9:41:49 PM, Woonsan Ko wrote:
>     >>>
>     >>>> On 6/1/15 3:26 PM, Daniel Dekany wrote:
>     >>>>> Sunday, May 31, 2015, 7:50:20 PM, Woonsan Ko wrote:
>     >>>>>
>     >>>>>> I personally prefer having the default value option inside the
>     >>>>>> parenthesis, without having to depend on the default value
>     after '!'.
>     >>>>>> So, I like the idea the odd number of parameters for a
>     default value.
>     >>>>>>
>     >>>>>> Regarding the original question about 'switch' and 'choose',
>     I like the
>     >>>>>> 'switch' very much, but I'm not sure if 'choose' is a good
>     name for
>     >>>>>> ternary operator. In XSL, 'choose' means just one choice of the
>     >>>>>> 'switch'.
>     >>>>>
>     >>>>> Actually, in XSLT "choose" stands for "switch" (and "when"
>     stands for
>     >>>>> "case"). But that just proves how confusing this word is...
>     >>>>
>     >>>> Oh you're right. Long time passed after I wrote XSL files last.
>     >>>>
>     >>>>>
>     >>>>>> 'choose' sounds like related to one of the 'multiple' choices
>     >>>>>> to me.
>     >>>>>
>     >>>>> Well, I'm also unhappy with "choose", I just couldn't find bett=
er
>     >>>>> yet... What do you think about "then". Apart from the lack of
>     "else"
>     >>>>> in it, it reads quite fluently: loggedIn?then(user.name
>     <http://user.name>, "unknown").
>     >>>>
>     >>>> Yeah, "then" sounds better to me than anything else.
>     >>>>
>     >>>>>
>     >>>>>> Another option to consider might be 'iif' [1], which seems a
>     bit clearer
>     >>>>>> to me than 'either' and others.
>     >>>>>>
>     >>>>>>     someBoolean?iif(whenTrue, whenFalse)
>     >>>>>>
>     >>>>>> Just my two cents,
>     >>>>>
>     >>>>> I have played that idea back then, but I'm afraid very few
>     knows what
>     >>>>> does "iif" stands for. Also loggedIn?iif(user.name
>     <http://user.name>, "unknown") can be
>     >>>>> easily misread like: we are logged in IF user.name
>     <http://user.name> is "unknown".
>     >>>>
>     >>>> Agreed. Not sound fluent.
>     >>>>
>     >>>> Kind regards,
>     >>>>
>     >>>> Woonsan
>     >>>>
>     >>>>>
>     >>>>>> Woonsan
>     >>>>>>
>     >>>>>> [1] http://en.wikipedia.org/wiki/IIf
>     >>>>>>
>     >>>>>> On 5/30/15 6:02 AM, Daniel Dekany wrote:
>     >>>>>>> And regarding the semantics of ?switch... as it sands now,
>     if there's
>     >>>>>>> no matching choice, that will be an exception that says:
>     >>>>>>>
>     >>>>>>>   The value before ?switch(case1, value1, case2, value2,
>     ...) didn't
>     >>>>>>>   match any of the case parameters, and there was no default
>     value
>     >>>>>>>   parameter (an additional last parameter) either.
>     >>>>>>>
>     >>>>>>> So, if you have an odd number of parameters, then the last
>     one is like
>     >>>>>>> the default branch of switch in Java.
>     >>>>>>>
>     >>>>>>> I have also considered just returning null if there's no
>     match, and
>     >>>>>>> then one can write ?switch(...)!theDefault, but then if someo=
ne
>     >>>>>>> doesn't give a default, the error messages will just say that
>     >>>>>>> ?switch(...) has evaluated to null/missing, which many users
>     won't
>     >>>>>>> understand why's happening. Also it has the same problems as
>     >>>>>>> ?then(this)!that had.
> =

> =

>     ---------------------------------------------------------------------=
---------
>     _______________________________________________
>     FreeMarker-devel mailing list
>     [email protected]
>     <mailto:[email protected]>
>     https://lists.sourceforge.net/lists/listinfo/freemarker-devel
> =

> =

> =

> =

> -- =

> *Raymond Aug=E9*
> <http://www.liferay.com/web/raymond.auge/profile> (@rotty3000)
> Senior Software Architect *Liferay, Inc.*
> <http://www.liferay.com> (@Liferay)
> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> (@OSGiAllian=
ce)
> =

> =

> -------------------------------------------------------------------------=
-----
> =

> =

> =

> _______________________________________________
> FreeMarker-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/freemarker-devel
> =



-- =

[email protected]     www.onehippo.com
Boston - 745 Atlantic Ave, 8th Floor, Boston MA 02111
Amsterdam - Oosteinde 11, 1017 WT Amsterdam
US +1 877 414 4776 (toll free)
Europe +31(0)20 522 4466

---------------------------------------------------------------------------=
---