Scheme/SICP 中“->”的用法

Usage of "->" in Scheme/SICP

在谈论 Painters 时,SICP 使用定义如下的过程:

(define (segments->painter segment-list)
   ...
)

不幸的是,文本没有(还?)说明 -> 代表什么。 Scheme中->的用法是什么?例如,显示片段在画家身上被视为 'method'(或者反之亦然)是不是 OOP 式的事情?我唯一看到 -> 表示法的地方是在 C 中,当然我们在这里不处理指针,所以我有点不清楚它是如何使用的或者它使用的约定。

它只是名称中允许使用的字符的一部分,因此它只是恰好对过程求值的变量 segments->painter 的一部分。

虽然没有任何真正的语法意义,但在 Scheme 中有一些通用的命名约定,旨在为源代码的 reader 提供信息。像 a->b 这样的过程将 type/category a 的参数转换为 type/category b 之一。例如。 number->string 接受一个数字和一个基数,并将它们计算为该数字的字符串表示形式。您的示例采用 segments 并评估为 painter 并且我不需要知道什么是 painter 片段或该方法如何工作来假设它。在 Java 中,人们会调用相同的 segmentsToPainter,每个 java 开发人员都会理解它的作用。

另一个例子是以问号结尾的程序。例如。 done?color? 是检查某些参数和 returns 真值或假值的过程示例。 Java 与 ishas 前缀相同,例如。 isDonehasColorishas 除了命名约定外没有任何真正的语法意义。