Yeah, this is probably one of the most glaring issues in LFE. (Not unlike Clojure, in that regard! Every year the Clojure survey puts "need better errors!" at or close to the top of user feedback ... and LFE is much worse than Clojure for it's error message ... opacity).
I often forget what the early stages of learning a given language were like for me ... they just tend to fade into the background. But I still remember the months of head-scratching I went through when I first started using LFE. It reminded me of my time using Mathematica two decades prior ...
I picked up LFE first, and when I started to learn Erlang, some of those error messages began making more sense. The most frustrating thing was when I finally *did* figure out what a message *really* meant, I couldn't remember the convoluted path I took to get there, and almost never remembered the end result ... lots of repeated discovery. I did find that as I exercised better practices from Erlang failure-handling, the messages occurred less often and those that did arise made more sense (not magic; handling errors properly in BEAM languages means you/your apps have a better context in which to view and understand the errors).
Though I can't offer any immediate solution to the poor error messages, one of the biggest recommendations I can make that will mitigate them is: keep your functions small. Break up the logic into sensibly named task-specific functions. The superficial benefit you get is that the stack traces will be a little more self-documenting. The more profound benefit is that your code becomes more concise, easier to reason about, easier to maintain and update, and -- most pertinent to this discussion -- far, far easier to debug (due to the improved logical clarity and separation of concerns). Sorry, I know this is all basic stuff, but it often bears repeating :-) (Hell, I have to repeat it to myself, sometimes ...)
In your first email of this thread, I have see that error message a bunch both in Erlang and LFE when I have made any number of mistakes that prevent the remote node from being able to find the given function (everything from typos, to unexported functions, to improper use of remote calling, etc.)