This directory includes the udpated code and compiled executable for the standard modeling language implementation of uscheme. The goal of this update is to remove the use of closures for the defenition and application of certain expressions. In addition, the test cases are provided as seperate scheme documents, which can be run by #> ./<uscheme executable> <uscheme code document>
. There are three code documents provided, which can be usd to demonstrate the functionality of this update. Finally, a test script is given to run the code documents and view the output for each. The contents of this directory do not include the sml documentation, source, and binaries. If you need to re-compile the updated uscheme implementation, you will need to access the mosmlc (Moscow SML Compiler) seperately.
- Simpler Function Representation: The new methodology avoids the need for complex closure logic, making the function's behavior purely dependent on its input arguments (args).
- Increased Maintainability: Without the need to capture and manage the dynamic rho environment, the interpreter becomes easier to implement, debug, and reason about.
- Uniform Treatment of Functions: Primitive functions and lambdas are now treated identically as FUNCTION values, streamlining the evaluation process.
- Loss of Implicit Context: Free variables in the lambda's body (those not declared as parameters) are no longer resolved automatically against the rho environment. The programmer or the interpreter must ensure that all required variables are explicitly passed in.
- Potential Verbosity: If a lambda relies on many free variables from rho, the new methodology requires these to be explicitly passed as arguments, potentially leading to more verbose code.