나는 파이썬으로 이것을하고있다. 나는 그것을 위해 설계되지 않은 언어로 유 전적으로 순수한 기능적 스타일 로 작성하는 것이 번거 롭다는 것을 알았 습니다. 예를 들어 in_order 의 두 정의를 대조하십시오 .
def in_order(xs):
for i in range(1,len(xs)):
if xs[i] > xs[i+1]:
return False
return True
inOrder :: (Ord a) => [a] -> Bool
inOrder xs = and $ zipWith (<=) xs (tail xs)
in_order
파이썬에서 Haskell 방식을 작성 하는 것은 장황 할 것입니다 (파이썬은 필요한 관용구를 잘 지원하지 않기 때문에).
그러나, 나는 기능적 조직 과 각 기능의 관용적 구현으로 파이썬 프로그램을 성공적으로 만들었습니다 . 이것이 프로그래밍하는 좋은 방법이라는 아이디어는 실제로 내 코드 카탈로그 프로젝트 의 논문 입니다. 따라서 내 구성 요소는 상태가있는 클래스가 아닌 추상화 및 함수 (순수한 인터페이스 사용 )를 중심으로 구성되어 있으며 잘 어울립니다. 실제로 이런 방식으로 구성된 코드는 클래스로 구성된 코드보다 재사용이 더 유연 해 보입니다. 그러나 저는 여전히 하스켈 신봉자이기 때문에 개인적인 편견이 될 수 있습니다.
따라서 귀하의 질문에 대한 답변은 다소 그렇습니다 . 생각하는 데 도움이되는 기능적인 뿌리를 사용하십시오. 예 : 관용구를 위해 루비에서 게으른 목록을 시뮬레이션하는 것은 아마도 가치보다 더 많은 문제가 될 것입니다.