这里有没有人有很好的例子来说明类型作为一等对象?
我想这有助于直接实现一些数学概念,这确实是我正在寻找的例子。
UPD为了澄清这个问题,如果可以使函数接受类型并返回类型,或者将类型存储在变量中,可以做什么?
我正在研究Aldor,但由于许可证问题,它有点死了。至少在上面的意义上,有些类型被称为第一类对象。
这里有没有人有很好的例子来说明类型作为一等对象?
我想这有助于直接实现一些数学概念,这确实是我正在寻找的例子。
UPD为了澄清这个问题,如果可以使函数接受类型并返回类型,或者将类型存储在变量中,可以做什么?
我正在研究Aldor,但由于许可证问题,它有点死了。至少在上面的意义上,有些类型被称为第一类对象。
看看 Agda2、ats-lang.org 和其他具有依赖类型的语言。不完全是你问的,但相关。
反射
如果类型是一流的对象,那么您可以进行反射。
动态工厂。
_types = {}
register_type(typ, iden):
_types[iden] = typ
def factory(iden):
typ = _types.get(iden)
if not typ:
raise ValueError('Type not registered for %r' % iden)
return typ()
register_type(SomeClass, 'class1')
register_type(SomeOtherClass, 'class2')
print factory('class1')