File: module

package info (click to toggle)
scheme9 2025.08.12-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,080 kB
  • sloc: lisp: 16,752; ansic: 11,869; sh: 806; makefile: 237; sed: 6
file content (18 lines) | stat: -rw-r--r-- 561 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
S9 LIB  (module <name> <definition> ...)                ==>  unspecific
        (using <name> (<name_i> ...) <expression> ...)  ==>  object

        (load-from-library "simple-modules.scm")

Simple modules. Inside of a MODULE expression, DEFINE defines
a local object and DEFINE* defines a public object. <Name> names
the module itself.

Expressions inside of USING may use all <name_i>'s that are
being imported from the module <name>.

(module math
  (define* (fact x)
    (if (= 0 x) 1 (* x (fact (- x 1))))))

(using math (fact)
  (fact 5))         ==> 120