4.13. kink/MOD

Mod to operate modules.

4.13.1. MOD.require(Mod_name ...[$config={}])

`require` produces the mod specified by `Mod_name`, initializing the mod if it is the first attempt for the mod.

Preconditions

• `Mod_name` must be a str

• $config, if given, must be a fun which takes a require_config val.

Result of `require`

• If the mod is successfully loaded, the success cont is tail-called with the mod. Subsequent attempts of `require` provide the same mod for the same mod name.

• If the mod is not found, the not found cont is tail-called with no args.

• If the program of the mod contains a compile error, the compile error cont is tail-called with (Msg, From_loc, To_loc) where `Msg` is the error message of the compile error, `From_loc` is the location of the beginning of the compile error, and `To_loc` is the location of the end of the compile error.

• If an exception is thrown while initializing the mod, the exception is propagated to the caller of `require`.

Examples

:MOD.require_from('kink/')

:FLAT_SET <- MOD.require('kink/container/FLAT_SET')
stdout.print_line(FLAT_SET.of('foo' 'bar' 'baz').repr) # => (flat_set "bar" "baz" "foo")

MOD.require('no/such/MOD'){(:C)
  C.on_not_found{ stdout.print_line('no such mod') }
} # => no such mod

If no conf option is needed, it is handier to use Varref.require_from.

:FLAT_SET.require_from('kink/container/')
stdout.print_line(FLAT_SET.of('foo' 'bar' 'baz').repr) # => (flat_set "bar" "baz" "foo")

4.13.2. type require_config

Conf val of MOD.require.

4.13.2.1. C.on_success($success_cont)

`on_success` specifies $success_cont as the success cont of `require`. If `on_success` is not called, VAL$identity is used as the default success cont.

Precondition:

• $success_cont must be a fun which takes the loaded mod.

4.13.2.2. C.on_not_found($not_found_cont)

`on_not_found` specifies $not_found_cont as the not found cont of `require`. If `on_not_found` is not called, a thunk which raises an exception is used as the default not found count.

Precondition:

• $not_found_cont must be a thunk.

4.13.2.3. C.on_compile_error($compile_error_cont)

`on_compile_error` specifies $compile_error_cont as the compile error cont of `require`. If `on_compile_error` is not called, a fun which raises an exception is used as the default compile error cont.

Precondition:

• $compile_error_cont must be a fun which takes (Msg, From_loc, To_loc), where `Msg` is the compile error message str, `From_loc` is the location of the beginning of the compile error, and `To_loc` is the location of the end of the compile error.

4.13.3. MOD.add_path(Path)

`add_path` inserts `Path` to the mod paths as the last path.

Precondition:

• `Path` must be a str