Sam Varner scripsit: > I'm confused about the different ways to load extensions. So brace > yourself for some newbie questions and feel free to state the obvious. > > 1. Should I prefer 'import' if it's available? E.g (import srfi-4) > instead of (use srfi-4).
Use, which is a synonym for require-extension, both loads a file (unless it is already loaded) and imports the names defined in any module with the same name as that file into the current namespace (which is a no-op if they have already been imported). So you should use (import srfi-4) at the top of a module that requires SRFI 4, but (use srfi-4) to load SRFI 4 into the REPL. > 2. Should I turn my own libraries into modules and 'import' instead > of 'require'? If you do, it makes it possible for people to selectively import only certain symbols, or to rename or prefix symbols on the fly to avoid conflicts. So this is a Good Thing, yes. > 3. With any of these methods, what do I need to do to make sure > that the macro definitions are properly loaded? If they are syntax-rules macros, nothing. If they are explicit-renaming macros and they call macros (as opposed to referring to macros) that aren't standard Scheme or Chicken macros, then special precautions are needed; see below. > 4. When should 'import-for-syntax' be used? In principle, when an explicit-renaming macro invokes (as opposed to referring to) a name defined in another module, the module must be imported with import-for-syntax rather than import. Currently, this is only necessary if the foreign name is a macro. > 6. Are there situations where other means (load, require-extension, > etc.) would be the way to go? Load just does brute-force loading of source code; it does not check if the file has already been loaded (as require does), nor does it handle compiled libraries specially (as load-library and require-library do), nor does it import anything (as use and require-extension do). Sometimes that's what you want, but not usually. -- John Cowan http://www.ccil.org/~cowan [email protected] "After all, would you consider a man without honor wealthy, even if his Dinar laid end to end would reach from here to the Temple of Toplat?" "No, I wouldn't", the beggar replied. "Why is that?" the Master asked. "A Dinar doesn't go very far these days, Master. --Kehlog Albran Besides, the Temple of Toplat is across the street." The Profit _______________________________________________ Chicken-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/chicken-users
