arc 함수의 절반은 polygon과 같지만, 인터페이스를 변경하지 않고는 polygon을 재사용할 수 없었다. 세 번째 인수로 angle을 받도록 polygon을 일반화할 수도 있지만, 그러면 polygon은 이제 적절한 이름이 아니게 된다! 대신에 더 일반화한 함수를 polyline이라고 부르자.
def polyline(t, n, length, angle):
for i in range(n):
t.fd(length)
t.lt(angle)
이제 polygon과 arc도 polyline을 사용하는 것으로 고쳐 보자.
def polygon(t, n, length):
angle = 360.0 / n
polyline(t, n, length, angle)
def arc(t, r, angle):
arc_length = 2 * math.pi * r * angle / 360
n = int(arc_length / 3) + 1
step_length = arc_length / n
step_angle = float(angle) / n
polyline(t, n, step_length, step_angle)