14 Units (Components)🔗

(require racket/unit) is needed for #lang racket/base.

Unit 将程序组织为可单独编译和可重用的组件。unit 类似于过程,因为两者都是用于抽象的一等值。过程对表达式中的值进行抽象,而 unit 对定义集合中的名称进行抽象。正如过程被调用以在给定实际参数的情况下对其表达式求值一样,unit 被调用以在给定导入变量的实际引用的情况下对其定义求值。然而,与过程不同的是,unit 的导入变量可以在调用之前与另一个 unit 的导出变量部分链接。链接将多个 unit 合并为一个复合 unit。复合 unit 本身导入将传播到链接 unit 中未解析的导入变量的变量,并从链接 unit 重新导出一些变量以供进一步链接。

    14.1 Signatures and Units

    14.2 Invoking Units

    14.3 Linking Units

    14.4 First-Class Units

    14.5 Whole-module Signatures and Units

    14.6 Contracts for Units

      14.6.1 Adding Contracts to Signatures

      14.6.2 Adding Contracts to Units

    14.7 unit versus module