녹 HKT의 없지만, 그 반복자는 같은 고차 함수 (HOF)과 기능적인 스타일로 지원 코딩을 편리 체인과 map
, filter
, fold
등.
세부 사항은 일반적으로 가비지 수집되는 반면, 녹 프로그램은 프로그램 흐름의 일부로 C++ RAII와 마찬가지로 결정적 방식으로 메모리 관리를 처리합니다.
효율적으로 연결을 허용하려면 개별 HOF의 반환 가능한 구성 가능한 게으른 표식 템플릿 및 .to_owned_vec()
또는 .collect()
또는 무엇이든으로 마무리하여 최종 결과를 데이터 (할당 및 한 단계로 평가)로 바꿀 수 있습니다.
어떤 상황에서는 이것이 필요하지 않은 경우 반환되는 expression-template은 반복자이며 충분하면 충분할 수 있습니다. 예를 들어, for
루프를 사용하여이를 반복하거나 일반 함수에 인수로 전달할 수 있습니다.
은 참조 :
비슷한 패턴이 모두 C (추가 라이브러리와) ++ (11)와 녹 가능하다. Rust의 generics는 C++ 템플릿만큼 강력하지 않지만 기본적으로 불변성, 표현 지향 구문, 다형성 람다 및 양방향 유형 추론을 통해 함수형 언어에 약간 더 가까운 느낌을줍니다.
'확장 방법'과 통일 된 호출 구문에 관해서도 Rust는 코드를 체계화하는 것과 비슷한 '개방형'방식을 허용합니다. impl
을 더 많은 방법으로 라이브러리 또는 프로그램의 모든 유형에 추가하거나 자신의 특성의 메소드를 구현하여 다른 라이브러리의 기존 유형을 확장 할 수 있습니다.
이렇게하면 C++보다 chainable 메서드 호출 스타일을 사용하기가 쉬워집니다. 즉, 형식을 수정하거나 파생 할 필요가 적습니다.
하스켈의 숙어가 순도와 관련이 있다는 것을 명심하십시오 (예 : IO 모나드, 렌즈 ..). 녹은 순수한 기능이 아닌 다중 패러다임입니다. 프로그램 수준에서 참조 투명성의 이점을위한 순수한 함수를 가질 수 있지만 변경 가능한 지역 변수로 구현이 단순화됩니다.
HKT를 유도 할 수있는이 매크로를 확인하십시오. https://gist.github.com/14427/af90a21b917d2892eace – CMCDragonkai
인상적입니다! 유형 변수의 이름 지정이 다소 임의적 인 것처럼 보일지라도. 저는 여러분이 타입 변수로 형질을 가질 수 있다는 것을 알지 못했습니다. 이것은 탁월한 해킹입니다. –