scheme - 在过程调用中强制从左到右的评估顺序
问题描述
在某些情况下,调用具有保证从左到右评估顺序的过程很有用。例如,当使用从端口读取的数据调用记录构造函数时,顺序很重要。通常这些字段的顺序与文件中的顺序相同,因此不需要重新洗牌。因此,通常的引入名称和排序方式的方法let*
有点繁琐。
提供此功能的标准库中是否有一些现成的语法?基本上,(f a b c)
我希望写一些类似的东西,而不是(ordered f a b c)
,它被翻译成
(let* ((t0 f)
(t1 a)
(t2 b)
(t3 c))
(t0 t1 t2 t3))
t0
与新符号t3
。
解决方案
您提出的情况还不够普遍,不能作为标准库中的一项功能,特别是考虑到解决方法let*
非常简单。此外,该语言使您能够通过其宏编写工具轻松地为自己提供此功能,这意味着它应该在标准库中的理由更少。如果您发现自己经常需要这样做,请编写一个宏作为库的一部分。
推荐阅读
- c++ - 蒂姆排序给出了不是 2 次幂的元素数量的错误
- ruby-on-rails - 未定义方法的 redmine 插件 500 错误
- google-apps-script - 如何在对象未定义时返回属性
- python-3.x - 如何在 fastai 中显示使用 open_image 函数打开的图像?
- cordova - ajax 调用不适用于 phonegap 构建(cli 9)和 android SdkVersion 28
- ios - 如何在快速注册时检查用户是否已经注册
- json - Uncaught (in promise) SyntaxError: Unexpected end of JSON input at AddAutor.js:78
- android - 如何使用 LetterAdapter 在 Android 中制作 CircleLayout
- java - graphql spqr 页面映射异常
- python - 写入文件 .txt