It’s not about only evaluate once, it’s about when to evaluate. Attributes are evaluated at compile-time, in this case the application logfwd is not loaded and you cannot get its version, I think you can load it manually though.
If logfwd is the name of your app, then it makes perfect sense, it can’t display your application version at compile-time as it is not compiled yet.
One thing you have to be careful with: mix will not be available once you release the application, so the.call has to be evaluated at compile-time!
If you don’t understand this behaviour yet, read about elixir metaprogramming, it is a rather complex subject and I wish there was more accesible material about it, the way I learned and understood it is by reading Metaprogramming by Chris McCord, a very good learning resource.