해킹 이 발생 flip
하거나 \x -> foo bar x 42
발생하는 코드가 너무 많기 때문에 매개 변수의 순서를 변경하기 위해 최근에 코드를 두 번 리팩토링했습니다 .
기능 시그니처를 디자인 할 때 커링을 최대한 활용하는 데 도움이되는 원칙은 무엇입니까?
답변:
카레 및 부분적 적용을 쉽게 지원하는 언어의 경우 원래 Chris Okasaki가 작성한 매력적인 주장 시리즈가 있습니다.
왜? 그런 다음 데이터에 대한 작업을 멋지게 구성 할 수 있습니다 . 예 insert 1 $ insert 2 $ insert 3 $ s
. 이것은 state의 함수 에도 도움이됩니다 .
"컨테이너"와 같은 표준 라이브러리는 이 규칙을 따릅니다 .
데이터 구조를 먼저 배치하기 위해 대체 인수가 제공되기도합니다. 따라서이를 닫아서 좀 더 간결한 정적 구조 (예 : 조회)에 대한 함수를 생성 할 수 있습니다. 그러나 광범위한 합의는 특히 괄호로 묶인 코드로 당신을 밀어 붙이기 때문에 이것이 승리가 아니라는 것 같습니다.
재귀 함수의 경우 가장 많이 변경되는 인수 (예 : 누산기)를 마지막 인수로 지정하고 가장 적게 변경하는 인수 (예 : 함수 인수)를 시작에 두는 것이 일반적입니다. 이것은 데이터 구조 마지막 스타일과 잘 어울립니다.
Okasaki 관점의 요약은 그의 Edison 라이브러리 (또 다른 데이터 구조 라이브러리)에서 제공됩니다.