この記事は興味深いと思います http://okmij.org/ftp/Scheme/oop-in-fp.txt
だから私はこのようにPythonで実装されたクラスのようなクロージャ(単なるおもちゃ)を書こうとしました:
def clos(x,y):
def getx():
print(x)
def gety():
print(y)
def setx(i):
nonlocal x
x = i
def sety(i):
nonlocal y
y = i
lc = locals()
return lambda x,*y:lc[x](*y)
k=clos(1,2)
k("getx")
k("gety")
k("setx",2)
k("getx")
lc = locals()
ただ、見た目はダサいと思います。ただしreturn lambda x,*y:locals()[x](*y)
、別の環境を構築するため、次の文では使用できません。
もっとシンプルに見せるコツはありますか?