Как сделать эти динамически типизированные функции типобезопасными? [закрыто]

Существует ли какой-либо язык программирования (или система типов), в котором вы могли бы выражать следующие функции Python статически типизированным и безопасным для типов способом (без необходимости использования приведений, проверок во время выполнения и т. Д.)?

#1:

# My function - What would its type be? 
def Apply(x):
    return x(x)

# Example usage
print Apply(lambda _: 42)

#2:

white = None
black = None

def White():
    for x in xrange(1, 10):
        print ("White move #%s" % x)
        yield black

def Black():
    for x in xrange(1, 10):
        print ("Black move #%s" % x)
        yield white

white = White()
black = Black()

# What would the type of the iterator objects be?
for it in white:
    it = it.next()

Ответы на вопрос(3)

Ваш ответ на вопрос