Call function in another lisp file

前端 未结 4 988
死守一世寂寞
死守一世寂寞 2021-01-15 17:26

I have to write a game in Lisp. In order to make it clear, I wanted to split the code in different .lisp files.

How can I call a function out of a function in the ot

4条回答
  •  鱼传尺愫
    2021-01-15 18:20

    If you use the function load it can be useful to not specify the file type.

    Loading files: fasl or source

    Instead of (load "foo.lisp") one can call (load "foo"). Typically Common Lisp provides the feature of compiling Lisp files to fasl (fast load) files. Those are usually pre-compiled byte code or native code. Typically the Common Lisp implementation will load the compiled code if a file exists for it. This saves time (because compiled code usually can be loaded much faster than Lisp source code) and the code usually is faster (because a file compiler has compiled it).

    Often one uses a function to load the compiled file if it is newer, or first compile the source file to a new compiled file.

    Loading a file, based on the current file being loaded

    In (load "foo") the file foo is not a complete filename. For example we don't know the directory where it is loaded from. This depends on things like the value of *default-pathname-defaults* or in some implementations on a current directory (typical for Unix systems). It may be useful to load the file based on the file we are currently loading - if loading one file triggers more files to be loaded. For this Common Lisp has the variables *load-pathname* and *load-truename* (which is the real filename as used with the filesystem).

    To load a file foo in the same directory as the currently loaded file call:

    (load (merge-pathnames "foo" *load-pathname*))
    

    To load a file foo in a subdirectory bar of the same directory as the currently loaded file call:

    (load (merge-pathnames "bar/foo" *load-pathname*))
    

提交回复
热议问题