나는이 기사를 읽었습니다 : http://en.wikipedia.org/wiki/Function_pointer 그리고 일종의 혼란 스럽습니다. C/C++에서 함수 포인터를 지원하기 때문에 일반적으로 함수 프로그래밍을 지원한다는 의미는 아닙니다. 함수 프로그래밍을 위해 실제로 C 나 C++을 사용하고 싶지는 않지만, C 또는 C++이 그런 것을 지원한다는 말을 들어 본 적이 없기 때문에 궁금합니다. (나는 많은 함수형 프로그래밍 언어에 대한 컴파일러가 C에 존재한다는 것을 알고 있지만 실제로는 "지원"이라는 뜻이 아닙니다.)C/C++의 기능 프로그래밍?
답변
편집 : 왜이 답변이 너무 싫어하는지 모르겠습니다. 이 질문은 구체적으로 함수 포인터에 대한 질문과 그 존재 여부가 C++에서 "함수 프로그래밍 전반"을 지원하는지 여부를 묻습니다.
일종의 기술적 인 방법은별로 유용하지 않습니다. 예 *. "기능적"프로그래밍의 진정한 본질은 기능이 가치라는 것입니다. C 및 C++는 lexical closures의 쉬운 생성 및 파기와 관련하여 도움을주지 않으며 partial application의 호의를 베풀지 않습니다. 함수 포인터를 사용하여 값처럼 작동하는 함수의 모양을 시뮬레이션 할 수 있다는 사실은 실제로 동일한 표현 언어의 결과 일뿐입니다. 이것을 "기능 프로그래밍"과 결합 시키려고하면 튜링 타피트에 깊이 들어가 있습니다.
* 실제 기술적 구분을 위해 C 및 C++에는 실제로 함수 유형이 인이 없습니다. 함수 포인터는 함수 값과 구별됩니다.
기능 프로그래밍 (실제로 관심이있는 경우 찾아보십시오)은 함수 포인터 나 함수 포인터가 부족한 경우가 거의 없습니다.
C++는 FP에 대한 많은 지원을받는 다중 패러다임 언어이며, 특히 이후 버전입니다. FP와 같은 WG21을 사용하는 많은 사람들이 지원을 요청합니다. C++ 11에서는 람다와 C++ 14 다형성 람다 데뷔도있었습니다. 그것은 많은 것들을 다룹니다. 기능이 2 등석 시민들에게 머물러있는 동안 람다는 정상을 이어갈 수 있습니다.
불행히도 꼬리 재귀 처리는 여전히 필수는 아니지만 컴파일러가 실제로 처리합니다. 그리고 지난 10 년 동안 const 오버로드를 엉망으로 만들었을 때 편리하게 "무한 재귀"를보고합니다. :)
C++에서 FP 스타일을 사용하여 꽤 멀리 갈 수 있으며 다른 스타일을 선택한 경우에도 더 나은 코드를 작성할 수 있습니다. 나는 모두가 SICP을 공부하는 것이 좋습니다.
저는 실제로 OCaml을 배우려고합니다. 이것이 바로 Wikipedia를 탐색하고 함수 포인터를 사용하게 된 원인입니다. 나는 함수 프로그래밍이 아직 무엇인지 아직 알지 못해이 질문을함으로써 총을 뛰어 넘었다 고 생각한다. – user2258552
언어가 정확히 도움이되지는 않지만 C++로 함수형 프로그래밍을 할 수 있습니다. 가능한 한 많은 불변 값을 사용하는 1 차 함수 프로그래밍은 확실히 쉽고 정확하지는 않지만 실제로는 monads을 구현할 수 있습니다!
- 1. Animate CC의 "모두 음소거"작업
- 2. GmailMessage.foward() cc의 자기
- 3. CC의 PayPal IPN
- 4. CC의 문서화되지 않은 플래그
- 5. Cc의 ProperCase에 대한 mcdonalds
- 6. xcodebuild에서 cc의 잘못된 실행 경로
- 7. 원자력 발전소의 기능 프로그래밍?
- 8. PHP의 태그 기능 프로그래밍
- 9. C 프로그래밍, 삭제 기능
- 10. JS에서의 기능 프로그래밍
- 11. 기능 패러다임의 병렬 프로그래밍
- 12. SML-기능 프로그래밍
- 13. 다트 메타 프로그래밍 기능
- 14. 기능 프로그래밍 : 홀수 체크
- 15. 기능 스타일 프로그래밍 정보
- 16. 프로그래밍 기능 키
- 17. 기능 프로그래밍 : 부작용
- 18. 프로그래밍 암호 기능 템플릿
- 19. 부가 기능/확장 기능, 프로그래밍 방법?
- 20. Animate CC의 코드가있는 객체에 색조 필터 적용
- 21. 나는 아래와 같이 CC의 maillist 준비한
- 22. CoffeeScript를 Photoshop CC의 node.js에 설치할 수 있습니까?
- 23. 일괄 처리 및 기능 프로그래밍
- 24. 프로그래밍 방식으로 프린터 기능 설정
- 25. 프로그래밍 방식으로 쉽게 기능 할당하기
- 26. 는 프로그래밍 기능/메소드 호출
- 27. 프로그래밍 "켜기/끄기"JGrowl 기능
- 28. /Will은 기능 프로그래밍 관용구를 지원합니까?
- 29. 기능 프로그래밍 : 목록의 항목 페어링
- 30. Standar ML 프로그래밍, 배열 기능
@cdbitesky, 나는 이것이 약간 불공평하다고 생각합니다. 문제는 함수 프로그래밍을 허용 할 때 함수 포인터의 역할을 확인하는 데 상대적으로 정확합니다. 분명히 우리는 "함수형 프로그래밍"에 대한 기술적 인 정의에 대해 약간의 말을 할 수 있지만, 필자는이를 내 대답에서 다뤘다 고 생각한다. – Gian