【问题标题】:Forcing left-to-right evaluation order in procedure call在过程调用中强制从左到右的评估顺序
【发布时间】:2021-02-20 06:12:05
【问题描述】:

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

在提供此功能的标准库中是否有一些现成的语法?基本上,我希望写的不是(f a b c),而是(ordered f a b c),它被翻译成

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

使用新符号 t0t3

【问题讨论】:

    标签: scheme order-of-execution r6rs


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-09
      • 2015-07-04
      • 2019-10-26
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多