Some interesting ideas for fine-grained modules (in fact, down to downright
miniscule modules) in:
http://www.sds.lcs.mit.edu/Larch/handbook/toc.html
They use slightly different language, but the essense seems to be there:
Ruby => Larch
module => trait
includes => includes
code => introduces + asserts + implies
module parameterized by includer methods => trait with parameter
expects to be provided by includer => trait parameters, assumes
Here are some of their 'modules':
Maps
hashes, hash composition, arrays..
Containers
Sets, Bags, etc. and operations
LexicographicOrder
defines lex ordering for any string-like thing
MinMax
defines min, max for anything with appropriate <=
DerivedOrders
defines any 3 comparison operators, given the fourth
Relation
relational operators and predicates, leading up to ...
Graph
with graph operators
Cheers!