#NEWLINE# def apply( s , t ) : #NEWLINE# #INDENT# if isinstance ( t , TCon ) : #NEWLINE# #INDENT# return t #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if isinstance ( t , TApp ) : #NEWLINE# #INDENT# return TApp ( apply ( s , t . a ) , apply ( s , t . b ) ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if isinstance ( t , TFun ) : #NEWLINE# #INDENT# argtys = [ apply ( a , a ) for a in t . argtys ] #NEWLINE# retty = apply ( s , t . retty ) #NEWLINE# return TFun ( argtys , retty ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if isinstance ( t , TVar ) : #NEWLINE# #INDENT# return s . get ( t . s , t )