실제로 연속체를 사용할 수있는 많은 유용한 상황은 이미 특수 언어 구문 (throw/catch, return, C#/Python yield)에 의해 다루어지고 있습니다. 따라서 언어 구현 자들은 자신 만의 솔루션을 구현하는 데 사용할 수있는 일반화 된 형식으로 제공하려는 많은 인센티브를 실제로 갖지 못합니다.
일부 언어에서는 일반화 된 연속성을 효율적으로 구현하기가 어렵습니다. 스택 기반 언어 (즉, 대부분의 언어)는 기본적으로 연속을 만들 때마다 전체 스택을 복사해야합니다.
이러한 언어는 일반적인 스택 기반 모델을 손상시키지 않는 일반적인 연속 기능을 구현할 수 있지만 일반화 된 경우보다 훨씬 효율적으로 구현할 수 있지만 일반화 된 연속성을 구현하는 것은 그만한 가치가 없습니다.
기능 언어는 몇 가지 이유 연속성을 구현 가능성이 더 높습니다 :
그들은 자주 "호출 스택"을 의미 연속 통과 스타일에 구현
- 아마 힙에 할당 링크 된 목록입니다. 이렇게하면 현재 프레임을 팝하고 새 프레임을 누를 때 스택 컨텍스트를 덮어 쓸 필요가 없으므로 스택에 대한 포인터를 연속으로 전달할 수 있습니다. (필자는 결코 CPS를 구현하지 못했지만 그것을 이해하고 있습니다.)
- 그들은 불변의 데이터 바인딩을 선호합니다. 스택을 생성 할 때 스택이 가리키는 변수의 내용을 변경하지 않기 때문에 이전의 연속성을 훨씬 유용하게 만듭니다.
이러한 이유로 연속성은 대부분 기능 언어 영역에 머물러 있습니다.
자세히 설명해 주시겠습니까? 예를 들어? – khelll
나는 방금 Lisp에서'(cons a b)'대신 "pros"의 반대 인 "cons"를 의미한다는 것을 깨달았다. –
종결을 의미 했습니까, 아니면 실제로 연속성을 의미 했습니까? – troelskn