寻找一种方法来实现一个通用的通用memoization函数,它将获取一个函数并返回相同的memoized版本?
在python中寻找像@memo(来自Norving的网站)装饰的东西.
def memo(f):
table = {}
def fmemo(*args):
if args not in table:
table[args] = f(*args)
return table[args]
fmemo.memo = table
return fmemo
Run Code Online (Sandbox Code Playgroud)
更一般的是,有没有办法在C++中表达泛型和可重用的装饰器,可能使用C++ 11的新功能?
所以我和我的朋友争论说,像GCC这样的编译器可以在没有任何类型信息的情况下自动检测纯函数.我不信.
像D或Haskell这样的语言在其类型系统中具有纯度,程序员明确定义了哪些函数是纯粹的还是纯粹的.纯函数没有副作用,因此可以非常容易地并行化.
所以问题是:这一切都是必要的吗?编译器可以检测纯度,而不需要任何元或类型信息,只需假设任何执行IO或自动访问全局变量的东西都不纯粹吗?
__attribute__((const))和__attribute__((pure))GNU C有什么区别?
__attribute__((const)) int f() {
/* ... */
return 4;
}
Run Code Online (Sandbox Code Playgroud)
VS
__attribute__((pure)) int f() {
/* ... */
return 4;
}
Run Code Online (Sandbox Code Playgroud)