[racket] Boolean expressions [Was: static variables question]
Oh, good point! I've adjusted implies to just take two arguments.
Meanwhile, I've also added a binary xor. It returns the non-#f
argument when exactly one of the arguments is #f and otherwise returns
#f. Comments welcome.
Robby
On Mon, Feb 20, 2012 at 5:28 AM, Carl Eastlund <cce at ccs.neu.edu> wrote:
> If (implies a b ... z) is equivalent to (implies a (implies b ... z)), then
> it is also equivalent to (implies (and a b ...) z). In which case, the
> 1-ary case should be clear: just return z. In truth, it is not really
> necessary to have n-ary implies if you're willing to nest the (and ...)
> explicitly. Given that Scheme/Racket n-ary operators tend to have the "..."
> last, with occasional exceptions like list* and apply, restricting implies
> to 2 arguments might avoid cases where (implies a b c d e) is confusing to
> read. (implies (and a b c d) e) is clearer.
>
> Carl Eastlund
>
> On Sun, Feb 19, 2012 at 8:16 PM, Robby Findler <robby at eecs.northwestern.edu>
> wrote:
>>
>> On Sun, Feb 19, 2012 at 7:10 PM, Neil Toronto <neil.toronto at gmail.com>
>> wrote:
>> > On 02/19/2012 06:05 AM, Robby Findler wrote:
>> >>
>> >> On Sun, Feb 19, 2012 at 12:30 AM, Gary Baumgartner<gfb at cs.toronto.edu>
>> >> wrote:
>> >>>
>> >>> On a more productive note: in Racket code I define and use 'implies' a
>> >>> lot,
>> >>> often conjoined, for predicates. It's mainly of declarative value,
>> >>> which
>> >>> is
>> >>> perhaps why it's uncommon in implementation despite how common it is
>> >>> in
>> >>> specification. And for boolean expressions in general I also use
>> >>> 'neither'.
>> >>> Are these something that others [would] use and so could be added to
>> >>> Racket's
>> >>> library?
>> >>
>> >>
>> >> Seems to me adding implies, nand, and nor to racket/bool is a good
>> >> idea.
>> >>
>> >> Let me know if you disagree (and if you disagree after I've already
>> >> committed, it is a simple thing to drop the commit or change it).
>> >
>> >
>> > I've occasionally written my own `implies', but never make it shortcut
>> > like
>> > `and' and `or'. Speaking of which, would it handle more than two
>> > arguments?
>> > One? Zero? What kind of associativity would be appropriate?
>>
>> The version I checked in shortcuts in an implication-appropriate way
>> (if the first argument is #f). I think the convention (due to
>> functions and currying) is pretty well established that it associates
>> to the right. So that's what the version I checked in does for the 3+
>> argument case. I didn't see something reasonable for the 0 or 2-ary
>> case so it doesn't handle them.
>>
>> > Bwahaha.
>>
>> :)
>>
>> I'm still pondering those questions for xor. :)
>>
>> Robby
>>
>> ____________________
>> Racket Users list:
>> http://lists.racket-lang.org/users
>
>