Scheme 在过程调用中强制执行从左到右的求值顺序

Scheme 在过程调用中强制执行从左到右的求值顺序,scheme,order-of-execution,r6rs,Scheme,Order Of Execution,R6rs,在某些情况下,调用具有保证的从左到右求值顺序的过程是有用的。例如,当使用从端口读取的数据调用记录构造函数时,顺序很重要。字段的顺序通常与文件中的顺序相同,因此不需要重新排列。因此,通常通过let*引入名称和排序的方法有点麻烦 在提供此功能的标准库中是否有现成的语法?基本上,我不希望写(fabc),而是希望写类似(按顺序fabc)的东西,它被翻译成 (let* ((t0 f) (t1 a) (t2 b) (t3 c)) (t0 t1 t2 t3))

在某些情况下,调用具有保证的从左到右求值顺序的过程是有用的。例如,当使用从端口读取的数据调用记录构造函数时,顺序很重要。字段的顺序通常与文件中的顺序相同,因此不需要重新排列。因此,通常通过
let*
引入名称和排序的方法有点麻烦

在提供此功能的标准库中是否有现成的语法?基本上,我不希望写
(fabc)
,而是希望写类似
(按顺序fabc)
的东西,它被翻译成

(let* ((t0 f)
       (t1 a)
       (t2 b)
       (t3 c))
  (t0 t1 t2 t3))

使用新符号
t0
t3

您提出的情况几乎不常见,无法作为标准库中的一项功能,特别是考虑到使用
let*
的解决方法非常简单。此外,该语言通过其宏编写功能,使您能够轻松地实现这一功能,这意味着它应该放在标准库中的理由更少。如果您发现自己需要经常这样做,请编写宏作为库的一部分