누군가가 조합자가 무엇인지 명확히 할 수 있습니까? 함수가 결합 자 (combinator)가 될 필요가있는 것은 무엇입니까? 공식적인 정의가 있습니까? 스칼라 책에서 Functional Programming을 살펴보면이 두 용어가 같은 의미로 사용되는 것으로 보입니다.기능을 콤비 네이터로 만드는 것은 무엇입니까?
답변
일반적으로 함수는 프로그램의 모듈을 나타냅니다. 반면에 Combinators는 같은 의미로 모듈을 나타내지 않습니다. 대신 모듈을 전체 프로그램에 결합하는 데 사용됩니다.
결합자는 2 개 (또는 그 이상)의 값을 결합하여 결과가 결과의 일부인 방식으로 결합합니다. 연결자를 인식하는 방법은 자신의 결과와 동일한 (또는 유사한) 유형의 인수를 적어도 하나 이상 가져야한다는 것입니다. 따라서, 예를 들어, many
(의사 하스켈) : 그것은 파서를 취하고 파서를 반환하고 파서 p
때문에 파서 many p
의 일부이기 때문에
many :: Parser a -> Parser [a]
연결자이다.
length :: [a] -> Int
는 대부분의 인수에서 정보의 파기 때문에이 목록을 소요하지만, Int
을 반환하고, 모두 있기 때문에, 연결자 없습니다. 이 Int
의 소요와 Int
반환하면서, 여전히 인수의 정보의 일부가 삭제 becase
(+) :: Int -> Int -> Int
도 연결자 아니다; 2
및 3
은 실제로 동일한 부분이 아닙니다 5
p
은 many p
의 일부입니다.
직관은 프로그램을 작성할 때 입력의 첫 번째 비트를 구문 분석하고이 반복 된 요소를 구문 분석 한 다음 나머지 구문을 구문 분석하고 구문 분석 트리를 함께 넣는 것으로 시작한다는 점입니다. 그런 다음 최종 프로그램을 얻기 위해 그들에게 콤비를 적용, 그 조각을 코드 :
putThePiecesTogether <$> parseTheFirstBit <*> many parseRepeatedBit <*> parseTheRest
[1] 또한 '0 인수'콤비 (상수 또는 다른 유형의 단지 기능을 할, 콤비 라이브러리에서 온 연결자). 그것들은 라이브러리의 중요한 부분이기도하고 아마도 자신들의 결합 자일 것입니다. 그래서 실제 규칙은 결합 자 (combinator)가 라이브러리의 대부분의 함수가 동일한 유형의 값을 취하고 반환한다는 것입니다. 결과의 '일부분'이다.
- 1. 연속체와 기능을 구별하는 것은 무엇입니까?
- 2. NgModelController를 컨트롤러로 만드는 것은 무엇입니까?
- 3. 테이블을 "느리게"만드는 것은 무엇입니까?
- 4. STL을 빠르게 만드는 것은 무엇입니까?
- 5. NSdata를 유리하게 만드는 것은 무엇입니까?
- 6. 기능을 적용하는 것은 R
- 7. 하스켈 파서 콤비
- 8. CSS 콤비 선택
- 9. CSS3 인접 형제 콤비
- 10. 컨트롤러에서 풍부한 기능을 제공하는 것은 무엇입니까?
- 11. 스위트 (바디)없이 기능을 사용하는 것은 무엇입니까?
- 12. 함수를 만드는 것은 upperBits
- 13. 선택한 기능을 만드는 방법은 무엇입니까?
- 14. 콤비 네이터 줄이기 Wolfram Mathematica
- 15. 구현 <~ 파서 콤비 사업자
- 16. Silverlight를 매력적인 기술로 만드는 것은 무엇입니까?
- 17. SQL 문을 sargable로 만드는 것은 무엇입니까?
- 18. WP8 앱을 만드는 데 필요한 것은 무엇입니까?
- 19. 스키마의 "스택". 특수하게 만드는 것은 무엇입니까?
- 20. HTML의 잘못된 출력을 만드는 것은 무엇입니까?
- 21. 에스프레소를 그렇게 빨리 만드는 것은 무엇입니까?
- 22. Makefile에서 좋은 휴대용 대상을 만드는 것은 무엇입니까?
- 23. "declarator invalid"로 만드는 것은 무엇입니까? C++
- 24. 무언가를 "특성 개체"로 만드는 것은 무엇입니까?
- 25. 인터페이스를 만드는 데 가장 적합한 것은 무엇입니까?
- 26. 정확하게이 문자를 "%> %"로 만드는 것은 무엇입니까?
- 27. 컴퓨터를 천천히 부팅하게 만드는 것은 무엇입니까?
- 28. 텍스트를 만드는 것은 사라
- 29. 차단 기능을 만드는 방법
- 30. 해양에서 새로운 기능을 만드는 방법은 무엇입니까?