Defining TvShow with strict fields for title, startTime and summary makes sure
these fields are evaluated (to WHNF, but in case of `Data.Text`, that means
fully evaluated) **when the TvShow value is evaluated to WHNF**.
how do I know what does "evaluated to WHNF" means for every possible type?
For instance, what does that mean for "String"? What does that mean for "Maybe String"?
If I want the field to be fully evaluated, is !(Maybe String) enough or should I even do !(Maybe !String) or something more?
Any source of information where I can read about this in depth would be welcome (I have yet to read Real World Haskell, maybe it's covered there?).