#!/usr/bin/env python3class Thunk: def __init__(self, func, *args): self.func = func self.args = args def force(self): return self.func(*self.args)def fix(f): return f(Thunk(fix, f))@fixdef fact(f): def fact_n(n): if n == 0: return 1 else: return n * (f.force())(n-1) return fact_nprint(fact(5))