问题标签 [ctfe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
110 浏览

d - `typeof(expr)` 的效率如何?

typeof处理复杂表达式时效率如何?

具体来说,在这两种情况下:

  • 完全由常量部分组成的复杂表达式,不需要CTFE 进行评估

  • 需要mixin()CTFE 字符串的复杂表达式。

我不知道这是否有根本的不同,但这是我关心的两种情况。

0 投票
3 回答
77 浏览

d - 从数组中定义的文件名导入内容

import我可以像这样连接在编译期间读取的文件:

result如果我在数组中有文件名,如何获得连接?

此代码返回错误Error: variable f cannot be read at compile time

函数式方法似乎也不起作用:

它返回相同的错误:Error: variable b cannot be read at compile time

0 投票
1 回答
148 浏览

d - 编译时函数的记忆

我想懒惰地评估功能。由于计算返回值的成本很高,所以我必须使用 memoization,尤其是对于被调用的子函数,否则计算的时间复杂度会呈指数级增长。我需要编译时的结果。(我正在编写一个库,它根据提供的字符串提供各种编译时模板。)简而言之,我需要在编译时进行记忆。

std.functional.memoizeCT不起作用,所以这是不可能的。DMD 和 LDC 不够聪明,无法记忆纯函数,至少这是我对简单纯函数的实验结果:我测试它是否缓存结果的方式:

使用简单的参数:

使用模板参数:

计时编译(调用 sumN 一次 vs 两次):

或者

当我在源代码中有两个枚举时,编译时间总是两倍。

有什么方法可以记忆 CT 功能吗?

0 投票
1 回答
64 浏览

d - 在 D 中实现 C 风格的 sizeof() 函数

我想在 D 中实现一个 C 风格的 sizeof() 函数。(我知道 .sizeof 的东西,但它有助于移植很多 C(C99)。)

我希望它能够在编译时运行,显然并将类型或表达式作为参数。理想情况下,如果可能的话,我希望它具有与 C 相同的语法,而不是使用独特的模板调用语法,因为这会大大增加它的实用性。这是可能吗?

0 投票
1 回答
1348 浏览

rust - 如何在运行时解释或评估 Rust?

我一直在搜索,虽然这似乎是一个非常需要的功能,但所有搜索结果似乎至少有一年的历史。

这是什么现状?是否有在运行时评估任意 Rust 代码的好解决方案(如 Haskell 的提示)?

也许可以用Miri做点什么?