On Wed, Feb 24, 2021 at 12:51:24PM -0500, Richard Damon wrote:

> Of the unary, python implements them all, the possible opererators for
> op a are:
> 
> True
> 
> False
> 
> a
> 
> not a


Those who have read my posts over the years will realise that I enjoy 
being pedantic as much as the next guy, but the trick to being pedantic 
is that you have to be *correct* in your pedantry :-)

The only operator in your list is `not`. True and False are values, not 
operators: you can't say "True x" to ignore the value of x and return 
True. And likewise `a` has no operator at all.

I'm sure that philosophers would like to debate whether the absense of 
an operator counts as an operator, but from the point of view of a 
programmer, it's hard to google for an operator that isn't there :-)

Of course, as you pointed out in another post, it's unlikely for any 
practical programming language to define such operators, although that's 
the sort of thing that esoteric languages might do. For the record, here 
are the four unary operators defined as functions:

    def contradiction(a): return False
    def tautology(a): return True
    def identity(a): return a
    def negation(a): return not a


> Of the 16 binary operators a op b you can get:
[...]

There is no question that we can get the results of calling all sixteen 
boolean operators, but whether Python defines them or not. Although I'll 
grant you that using the comparison operators is a very nice trick, 
e.g. using `==` to spell the "material biconditional" operator. I 
totally forgot that you could do that, so thank you. I guess Python does 
define more than `and` and `or` after all :-)

Speaking of esoteric languages, one can define the complete set of 
boolean 1- and 2-argument operators using only two functions, plus a 
third helper to display the results:


    def true(x, y):
        return x

    def false(x, y):
        return y

    def print_bool(b):
        print b("true", "false")

    print_bool(true)
    print_bool(false)

Using just those two functions, we can define all boolean operators.

    def And(a, b):
        return a(b, a)

    def Or(a, b):
        return a(a, b)


The others are left as an exercise :-)



-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/CBP6VEZMULPKSQ2OFOSAQJTS425EIW6Y/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to