相关疑难解决方法(0)

在C++ 11中编写通用记忆功能

寻找一种方法来实现一个通用的通用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的新功能?

c++ memoization c++11

53
推荐指数
4
解决办法
1万
查看次数

编译器是否可以自动检测纯函数而无需关于纯度的类型信息?

所以我和我的朋友争论说,像GCC这样的编译器可以在没有任何类型信息的情况下自动检测纯函数.我不信.

像D或Haskell这样的语言在其类型系统中具有纯度,程序员明确定义了哪些函数是纯粹的还是纯粹的.纯函数没有副作用,因此可以非常容易地并行化.

所以问题是:这一切都是必要的吗?编译器可以检测纯度,而不需要任何元或类型信息,只需假设任何执行IO或自动访问全局变量的东西都不纯粹吗?

c compiler-construction gcc haskell d

38
推荐指数
2
解决办法
2662
查看次数

GNU C中的__attribute __((const))vs __attribute __((pure))

__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)

c attributes gcc gnu const

30
推荐指数
2
解决办法
1万
查看次数

标签 统计

c ×2

gcc ×2

attributes ×1

c++ ×1

c++11 ×1

compiler-construction ×1

const ×1

d ×1

gnu ×1

haskell ×1

memoization ×1