There is a precedent for such an operator (see
https://en.wikipedia.org/wiki/Material_conditional
<(https://en.wikipedia.org/wiki/Material_conditional> and
https://en.wikipedia.org/wiki/Truth_table#Logical_implication) and I
personally don't oppose it out of hand, despite it being slightly confusing
for me having not dealt with/studied such an operator previously.

So working this out for my own benefit, and using the Venn diagram
<https://en.wikipedia.org/wiki/Material_conditional#/media/File:Venn1011.svg>
in the first Wikipedia link above to represent the condition being
represented, red being the 'true' case and white being 'false', the example:

if (itIsRaining => iAmUsingUmbrella) {
  println 'I am dry'
} else {
  println 'I am wet'
}


could be written using more traditional operators as:

if (!itIsRaining || iAmUsingUmbrella) {
  println 'I am dry'
} else {
  println 'I am wet'
}

Using the truth table for implication (see 2nd link above):
*Implication*
*itIsRaining   (p)**iAmUsingUmbrella (q)**p* → *q*
T T T
T F F
F T T
F F T


and the wiki validates that *"p → q is equivalent to ¬p ∨ q."  *So really,
it is simply another way to represent a conditional relationship.


I vote include it for those situations where this operator makes more
sense. Those who don't need/like it can continue using more traditional
operators.

My $0.02. ;-)


-Jeff

On Fri, Jan 27, 2017 at 1:57 PM, Paolo Di Tommaso <paolo.ditomm...@gmail.com
> wrote:

> I agree on this. It could be very useful for custom DSL.
>
>
> Cheers, Paolo
>
> On Fri, Jan 27, 2017 at 9:27 PM, Krzysztof Kowalczyk <
> kowalczyk.krzysz...@gmail.com> wrote:
>
>> -1
>>
>> but I would like to have some extra operators for AST transformation that
>> are reserved, have priority and does not have assigned logic, for instance
>> =>, |>, @@, ^^, <-, := etc
>>
>> On 27 January 2017 at 08:18, Graeme Rocher <graeme.roc...@gmail.com>
>> wrote:
>>
>>> -1 from me, not immediately obvious what it does and seems like it
>>> would just confuse users for little syntactic gain.
>>>
>>> On Thu, Jan 26, 2017 at 5:27 PM, Daniel Sun <realblue...@hotmail.com>
>>> wrote:
>>> > Hi all,
>>> >
>>> >       The new parser(Parrot) supports "implies" operator(=>) now, e.g.
>>> >
>>> > // if and only if isDistributedTxFailed is true and isCompensated is
>>> false,
>>> > yields notConsistent.
>>> > if (isDistributedTxFailed => isCompensated) {
>>> >     println 'eventuallyConsistent '
>>> > } else {
>>> >     println 'notConsistent'
>>> > }
>>> >
>>> > // One more example:
>>> > if (itIsRaining => iAmUsingUmbrella) {
>>> >   println 'I am dry'
>>> > } else {
>>> >   println 'I am wet'
>>> > }
>>> >
>>> >        *More examples can be found at:*
>>> > 1)
>>> > https://github.com/danielsun1106/groovy-parser/blob/impliesO
>>> perator/src/test/resources/core/ImpliesOp_01x.groovy
>>> > 2)
>>> > https://github.com/danielsun1106/groovy-parser/blob/impliesO
>>> perator/src/test/resources/core/ImpliesOp_02x.groovy
>>> > 3)
>>> > https://github.com/danielsun1106/groovy-parser/blob/impliesO
>>> perator/src/test/resources/core/ImpliesOp_03x.groovy
>>> >
>>> > *Background of the "implies" operator(=>) :*
>>> > http://mathworld.wolfram.com/Implies.html
>>> > *Please let us know whether you like it, vote here:
>>> > *https://twitter.com/daniel_sun/status/824552059395465218
>>> >
>>> > Cheers,
>>> > Daniel.Sun
>>> >
>>> >
>>> >
>>> > --
>>> > View this message in context: http://groovy.329449.n5.nabble
>>> .com/VOTE-About-the-implies-operator-for-Groovy-3-tp5738129.html
>>> > Sent from the Groovy Users mailing list archive at Nabble.com.
>>>
>>>
>>>
>>> --
>>> Graeme Rocher
>>>
>>
>>
>

Reply via email to