gpt4 book ai didi

performance - 在 Julia 中,是否有宏来确定是否可以在解析时评估表达式?

转载 作者:行者123 更新时间:2023-12-04 03:27:45 25 4
gpt4 key购买 nike

在许多情况下,我希望能够断言在运行时不评估某个值。例如,在构造一些参数化结构时 Foo{A} where {A} ,我想确保A在解析时是已知的,不能通过动态调度来确定。例如。类似 Foo{@isstatic A}() .

有没有办法强制执行?

更新 1:

也许我想要的是检查类型是否为 Core.Compiler.Const (例如,通过类型断言)?但我怀疑这是在这里做的正确的事情。

更新 2:

也许另一种说法是:是否有类似 C++ 的东西 constexpr在 Julia 中打算在 Base 之外使用?

最佳答案

没有办法在编译器上强制执行。但是,解析器中没有计算任何内容(类型等常量的传播发生在稍后阶段),因此这也很简单,只需将其设置为始终返回 false .

与其他一些语言不同,Julia 不会将优化器失败(例如无法不断折叠某些东西)转化为编译器错误。它也没有不同的编译时类型。该语言中的所有内容都在运行时可用,因此您不必受制于某些编译器标准的奇思妙想来定义哪些在编译时有效,哪些将无法进行类型检查。

与其将其视为问题,不如接受 Foo{@isstatic A}() 的事实。刚写完 Foo{A}()在 Julia !不需要你的任何扭曲!如果某些值在编译时可用,编译器将找出并使用该值。如果未知,则运行时仍将使用该值来获得相同的答案。

关于performance - 在 Julia 中,是否有宏来确定是否可以在解析时评估表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57567406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com