> Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm > Date: Thu, 31 Oct 2002 22:36:58 -0800 > From: Michael Lazzaro <[EMAIL PROTECTED]> > X-Accept-Language: en,pdf > Cc: [EMAIL PROTECTED] > X-SMTPD: qpsmtpd/0.12, http://develooper.com/code/qpsmtpd/ > > Larry Wall wrote: > > Please don't think of C<bit> as a boolean type. There is no boolean > > type in Perl, only a boolean context. Or looking at it from the > > other direction, *every* type is a boolean type. > > Er... dang. While I certainly agree with the concept in principle, I'm > having a hard time sticking to it when I'm writing beginner-level docs. > Suppose I'm declaring something like: > > class Appliance { > > has bit $.is_plugged_in; > has bit $.is_turned_on; > has bit $.has_ul_approval; > } > > I'm declaring three attributes that are specifically always either true > or false. They can *only* be true/false, or yes/no, or 1/0 -- they have > no other possible values, and I want to declare them in such a way as to > clearly enforce that behavior. C<$.is_plugged_in> is never "5" or > "timmy" -- only true or false, period! By definition, my _intention_ is > therefore to declare these three attributes as containing "boolean" values.
I suppose, since anything can have the "true" or "false" properties, you could roll your own boolean type like so: class bool { } Then my bool $electricity; Can contain nothing at all. But it can be true or false, since "everything is a boolean." I like that idea. You would use it (a tad awkwardly) as such: $electricity but= true if $plug; $electricity but= false if $short_circuit; Luke