In fact, just naively letting programs read files would also be grossly unsafe:
When computing the length of an array twice, it is important that we obtain the same result.
+**Update:** As @eddyb points out, things get even worse once you consider const generics, traits, and coherence: At that point, you have to [rely on evaluating the same expression in different crates to produce the same result](https://internals.rust-lang.org/t/mir-constant-evaluation/3143/47). **/Update**
> *CTFE must be deterministic.*