[racket-dev] #true and #false

From: Neil Van Dyke (neil at neilvandyke.org)
Date: Sun Oct 10 09:57:34 EDT 2010

Matthew Flatt wrote at 10/10/2010 09:39 AM:
> Any other opinions?

No strong opinion, but misc. comments:

* When working data in sexps a lot, "#f" taking a lot less space than 
"#false" can make things a lot more readable.  Imagine, for example, a 
vector of 20 small integers and false values intermixed.

* "#f" is often used to represent something like ``none'' or ``null'' 
rather than ``false'', so spelling it out as "#false" will take some 
readjustment for some people.

* "#true" and "#false" do have the advantage of appearing more like a 
conventional friendly language.

* Regarding friendly languages "#true" and "#false" have the unfriendly 
"#" (ugly, visually dominating, harder to type, longer).  Some 
conventional programmers will prefer "#f" because, although not as 
friendly as "false", it's more terse.

* It's nice that "#t" and "#f" are the same length, for lining things 
up, such as in matrices.

* "#t" and "#f" can be hard to distinguish from each other visually.  
Look at a vector of mixed "#t" and "#f" values, for example.

* "#t" and "#f" should always be synonymous with "#true" and "#false", 
for compatibility with other Racket and Scheme code.

* There should be a print parameter to force printing as "#t" and "#f", 
for interoperation with Schemes.


Posted on the dev mailing list.