除了Solidiy之外,是否还有任何语言具有明确的编译器强制纯修饰符?我知道有些工具允许将功能标记为纯静态分析,例如Java的@Contract注释,但找不到任何能宣传明确的pure
修饰符的语言。同时,具有此修饰符将打开大量编译器优化,并使代码推理更加容易。
如果没有这样的语言,那么引入这样的修饰语是否有任何挑战?在典型的类似于Java的命令式语言中,我能看到的唯一困难是,如果可以将每个native
(FFI)调用视为纯文本,则需要将每个pure
显式标记为unsafe pure
。可能会增加诸如日志记录的难度,但是当开发人员向编译器发誓该函数是纯函数(即使不是真的)时,这些函数可以标记为{{1}},这可能会阻止编译器优化这些函数,但是推理的好处会保留。