By forward function declarations I mean what is needed when a function defined later in the file is called from a preceding one.

By circular I mean file A requires a function in file B which requires a function in file A. Something along those lines

PS. Apologies for inquiring about this again. I am sure I enquired sometime in the past and forgotten the actual question and the response to it.

  • db48x@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Mostly they just aren’t a problem. If you write a function A that calls some function B that doesn’t exist yet, you might get a warning. It’ll say something like “B is not known to be defined”. But the key thing to remember is that it doesn’t really care about B yet, not until you actually call A. Only then will it resolve B, checking to see if it is a real function or not, and then call it or error out.

    But since most people get annoyed by warnings, they would ensure that A and B are in the same file. JDRiverRun also suggests using decare-function. If you read the docstring for that (using C-h f), you‘d get a link to chapter 13.16 Telling the Compiler that a Function is Defined of the Emacs Lisp Manual which describes some of the scenarios where it is useful.