An immutable version of Ruby's Struct class