[racket-dev] Lists aren't sets, but have set-like operations

From: J. Ian Johnson (ianj at ccs.neu.edu)
Date: Wed Aug 21 18:56:15 EDT 2013

I just wasted about 2 hours tracking down a bug that ended up being due to (set? '()) now evaluating to #t. I have no problems with set-union, intersection, etc. being defined for lists, but to treat lists as sets always is perverse to me. The contracts for set operations should use set-like? for (or/c set? list?) and keep the two constructions separate.

This conflation is almost as bad as treating empty list as false.

-Ian

Posted on the dev mailing list.