[snip] Let me rephrase to see if I understand you - you like the fact that boxed types + roles applied to those types + compile-time type checking/inference allows you to tag a piece of information (int, char, string, obj, whatever) with arbitrary metadata. Add that to the fact that you can lexically mark certain function signatures as checking against said arbitary metadata and you can provide taint-checking to an arbitrary complexity.
Yeah, that's cool. :-) Rob