S-Lang Run-Time Library Reference: Version 1.4.0: Eval Functions

Next Previous Contents

## 15. Eval Functions

## 15.1 autoload

Synopsis

  Load a function from a file

Usage

  `autoload (String_Type funct, String_Type file)`

Description

  The `autoload` function is used to declare `funct` to the interpreter and indicate that it should be loaded from `file` when it is actually used.

Example

  Suppose `bessel_j0` is a function defined in the file `bessel.sl`. Then the statement

  > `

  >           autoload ("bessel_j0", "bessel.sl");

  > `

  will cause `bessel.sl` to be loaded prior to the execution of `bessel_j0`
See Also

  `evalfile`

## 15.2 byte_compile_file

Synopsis

  Compile a file to byte-code for faster loading.

Usage

  `byte_compile_file (String_Type file, Integer_Type method)`

Description

  The `byte_compile_file` function byte-compiles `file` producing a new file with the same name except a `'c'` is added to the output file name. For example, `file` is `"site.sl"`, then the function produces a new file named `site.slc`.

Notes

  The `method` parameter is not used in the current implementation. Its use is reserved for the future. For now, set it to `0`.

See Also

  `evalfile`

## 15.3 eval

Synopsis

  Interpret a string as S-lang code

Usage

  `eval (String_Type expression, [,String_Type namespace])`

Description

  The `eval` function parses a string as S-Lang code and executes the result. If called with the optional namespace argument, then the string will be evaluated in the specified namespace.

  This is a useful function in many contexts such as dynamically generating function definitions where there is no way to generate them otherwise.

Example

  > `

  >         if (0 == is_defined ("my_function"))
  >           eval ("define my_function () { message (\"my_function\"); }");

  > `

See Also

  `is_defined, autoload, evalfile`

## 15.4 evalfile

Synopsis

  Interpret a file containing S-lang code.

Usage

  `Integer_Type evalfile (String_Type file, [,String_Type namespace])`

Description

  The `evalfile` function loads `file` into the interpreter and executes it. If called with the optional namespace argument, the file will be loaded into the specified namespace, which will be created if necessary. If no errors were encountered, `1` will be returned; otherwise, a S-lang error will be generated and the function will return zero.

Example

  > `

  >         define load_file (file)
  >         {
  >            ERROR_BLOCK { _clear_error (); }
  >            () = evalfile (file);
  >         }

  > `

Notes

  For historical reasons, the return value of this function is not really useful.

See Also

  `eval, autoload`

Next Previous Contents