Kaynağa Gözat

chapter 10: python

Peter Thiemann 3 yıl önce
ebeveyn
işleme
30b0dc1a46
1 değiştirilmiş dosya ile 6 ekleme ve 7 silme
  1. 6 7
      book.tex

+ 6 - 7
book.tex

@@ -18982,10 +18982,9 @@ print(t[1])
         case (_, AnyType()):
           return True
         case (FunctionType(ps1, rt1), FunctionType(ps2, rt2)):
-          return all([self.consistent(p1, p2) for (p1,p2) in zip(ps1,ps2)]) \
-              and consistent(rt1, rt2)
+          return all(map(self.consistent, ps1, ps2)) and consistent(rt1, rt2)
         case (TupleType(ts1), TupleType(ts2)):
-          return all([self.consistent(ty1, ty2) for (ty1,ty2) in zip(ts1,ts2)])
+          return all(map(self.consistent, ts1, ts2))
         case (_, _):
           return t1 == t2
 \end{lstlisting}  
@@ -19251,10 +19250,10 @@ class TypeCheckLgrad(TypeCheckLlambda):
         case (_, AnyType()):
           return t1
         case (FunctionType(ps1, rt1), FunctionType(ps2, rt2)):
-          return FunctionType([self.join_types(p1, p2) for (p1,p2) in zip(ps1, ps2)],
-                              self.join_types(rt1,rt2))
+          return FunctionType(list(map(self.join_types, ps1, ps2)),
+                                 self.join_types(rt1,rt2))
         case (TupleType(ts1), TupleType(ts2)):
-          return TupleType([self.join_types(ty1, ty2) for (ty1,ty2) in zip(ts1,ts2)])
+          return TupleType(list(map(self.join_types, ts1, ts2)))
         case (_, _):
           return t1
         
@@ -19774,7 +19773,7 @@ print( v[1] )
       case (FunctionType(ps1, rt1), FunctionType(ps2, rt2)):
         params = [generate_name('x') for p in ps2]
         args = [Cast(Name(x), t2, t1)
-                for (x,(t1,t2)) in zip(params, zip(ps1, ps2))]
+                for (x,t1,t2) in zip(params, ps1, ps2)]
         body = Cast(Call(ValueExp(value), args), rt1, rt2)
         return Function('cast', params, [Return(body)], {})
       case (TupleType(ts1), TupleType(ts2)):