하스켈 기초만 떼고 파이썬에 패러다임을 접목 시켜보려고 하는데

예를들어

빈 리스트 a=[] 에 b=[1,2,3]의 원소들을 옮겨 담고 싶을 때,

일반적인 방법으로는
for i in range(len(b)):
a.append(b[i])

가 있는데

이렇게 하면 a라는 변수가 갖는 값이
같은 스코프 내에서 유동적으로 변하는 부작용이 발생하기 때문에

def func(_list,i,_list2):
if i<len(_list):
_list2.append(_list[i])
return func(_list,i+1,_list2)

else:
return _list2

위와 같이 재귀적으로 함수를 정의한 후

a=func(b,0,[])

이렇게 a를 선언해 주면
특정 변수가 재정의 되는 경우 없이 깔끔하게 선언이 완료 되므로
(재귀되어 파생적으로 실행되는 각각 함수에서의
_list2.append() 는 상위함수에서 인자만 받았을 뿐이지
변수 자체는 각각 다른 별개의 변수이기 때문에)

'부작용' 을 최소화 할 수 있다..


이게 맞나요?? 아니면 저 혼자 뇌피셜로 개삽질 하는 건가요??
가르침 좀 부탁드립니다...