I don’t know why you would think that
newModelis computed twice.
Section 3.2 of The Implementation of Functional Languages by Peyton Jones seems to imply that you evaluate f newModel (using the let definition from the first example above) by calculating f (complicatedTransformationOf model). I never checked how Elm actually does it.
Thanks!