You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Yes, modules are supported although I need to improve how they work currently.
At the moment, modules are implicit. Each source file is a module and all the functions and classes at the top level scope of the source file are exported (listed in the module's corresponding .dec file). A module run function is generated for each module that initializes and runs all top level expressions. By passing in the -l flag when compiling, it will not insert a "main" function, so all modules except the entry point should be compiled with -l. Using the "import" keyword, you can import the declarations from another module, and then you can later link the resulting files. There is a limitation atm where you must compile all files from the same directory, or there will be a link error. This is because I used a pretty hacky way of determining the module run function's name, using the import path. The core library, libcore, is a module and the molten script will compile it if necessary and link it to whatever you're trying to run.
I've partially added a means of controlling what symbols are exported, and I will eventually make a means of importing a module as an object to keep the functions scoped under one name, although I'm not yet sure what syntax and semantics I want for that. I will also eventually memoize the module object so that even if a module is "import"ed multiple times, it will only run the module's top level expressions once and return the module object on all subsequent imports.
module: a collection of variables and functions contained in a single file
The text was updated successfully, but these errors were encountered: