10.4.6 Google Guava

Google’s Guava library for Java includes some immutable collection classes. I mention them as a good example of why I avoid the term “immutable”, because these collections are only immutable: there are constructors so you can create them, but there are no sublinear-time functional update operations to make new ones out of existing ones. So they’re not intended for use in functional algorithms. They do have some software-engineering advantages over Java’s standard stateful collections, such as being good things to pass across interfaces, but though I agree that that’s valuable, to me it’s only one of several desirable qualities of functional collections.