f# friends: any idea why the f# compiler emits top level let bindings as read-only properties? any benefit to this over e.g. readonly fields that are populated in a static initializer like the c# example? f# puts side effects into a static initializer too, but not pure values.