함수형 언어에서 놓칠 수있는 기능 중 하나는 연산자는 함수일 뿐이므로 사용자 지정 연산자를 추가하는 것은 함수를 추가하는 것만 큼 간단합니다. 많은 절차 적 언어는 연산자 오버로드를 허용하므로 어떤 의미에서 연산자는 여전히 함수입니다 (이것은 연산자가 템플릿 매개 변수에 문자열로 전달되는 D 에서 매우 그렇습니다 ).
연산자 오버로드가 허용되는 경우 사용자 지정 연산자를 추가하는 것이 쉽지 않은 경우가 많습니다. 나는 발견 이 블로그 게시물 사용자 정의 운영자가 있기 때문에 우선 순위 규칙의 중위 표기와 함께 잘 작동하지 않는 것을 주장하지만, 저자는이 문제에 대한 몇 가지 솔루션을 제공합니다.
주변을 둘러 보았고 해당 언어의 사용자 지정 연산자를 지원하는 절차 언어를 찾을 수 없었습니다. C ++의 매크로와 같은 해킹이 있지만 언어 지원과 거의 동일하지 않습니다.
이 기능은 구현하기가 쉽지 않기 때문에 왜 더 일반적이지 않습니까?
나는 그것이 추악한 코드로 이어질 수 있음을 이해하지만 과거에는 언어 디자이너가 쉽게 악용 될 수있는 유용한 기능 (매크로, 삼항 연산자, 안전하지 않은 포인터)을 추가하는 것을 막지 못했습니다.
실제 사용 사례 :
- 누락 된 연산자 구현 (예 : Lua에는 비트 연산자가 없음)
- D를 모방
~
(배열 연결) - DSL
- 사용
|
(코 루틴 / 발전기를 사용하여) 유닉스 파이프 스타일의 구문 설탕으로
또한 언어에 관심이 있어요 할 사용자 정의 연산자를 허용,하지만 난 더 관심이 있어요 왜 이 제외되었습니다. 사용자 정의 연산자를 추가하기 위해 스크립팅 언어를 포크하는 것에 대해 생각했지만 어디에서 보지 못했다는 사실을 깨달았을 때 언어 디자이너가 나보다 똑똑한 이유가있을 수 있습니다.