以 * 作为后缀的方案名称

edo*_*put 2 scheme racket

在 Scheme 的传统中,有一些形式与更原始的形式命名相同,但*附加了一个后缀。

一些例子

让* 定义*

现在对于这些派生形式的解释是,您可以在稍后的绑定类型中看到以前的绑定,letrec但一次创建一个 id 而不是一次创建一个 (?)。

现在这种模式将思想扩展到其他形式,并且一些包具有自定义宏,带有*符号作为后缀 ( define-ratbag*)。这是 Scheme 部落的一些隐含约定吗?这是在某处记录的吗?

Rya*_*per 9

*后缀可能意味着以下几件事:

  • 顺序作用域之类的let*,而不是独立作用域之类的let。示例:with-syntax*就像with-syntax,但每个右侧都在前面子句的范围内。
  • 相对于独立效应的连续效应。示例:parameterize*就像parameterize,但是每个参数的新值都使用更新为新值的先前参数进行评估;with-handlers*就像with-handlers,但是每个异常处理程序都是在安装了先前异常处理程序的上下文中调用的。
  • 像另一件事,但多次。示例:remove*is like remove,但删除所有出现的给定元素;regexp-match*就像regexp-match,但会找到所有匹配项。
  • 就像其他事情一样,但最后一个参数就像一个剩余参数。例如append*list*:(append* vss)相当于(apply append vss)
  • 像另一件事,但接受多个参数。示例:hash-set*就像hash-set,但接受多个键值对。
  • 就像另一件事,但只是有点不同。示例:write-bytes-avail*就像write-bytes-avail,除了它从不阻塞;date*就像date除了它添加了纳秒和时区名称字段;call-with-input-file*就像call-with-input-file在转义时关闭输入端口一样。在这种用法中,您可以读*作 Scheme/Racket 版本的素数后缀。

  • 最后一条才是真正的含义。所有其他的都有不同的方式,它与某些特定的模式有所不同:-) (2认同)