1

Forth가 rot 연산자를 구현하는 이유는 무엇이며 왜 스택의 최상위 세 항목에서 정확히 작동합니까?'썩은'연산자의 필요성

편의를 위해서인가 아니면 그러한 지시없이 Turing-complete하지 않겠습니까? 튜링이 완성 될 수있는 최소한의 가능한 옵션은 3 가지입니까?

rotpick 또는 roll으로 구현할 수 있습니다. 따라서이 세 가지 작업 중 하나도 없으면 여전히 Turing 완료입니까?

+1

기본 스택 기반 언어이므로 작업을 완료하기 위해 스택 상단 값을 셔플해야하는 것이 일반적입니다. 그렇게 많은 어휘 : dup, dup, drop, swap, over, nip, tuck, rot, -rot, 물론 편리함. –

+0

@HansPassant 편집을 참조하십시오, 편의를 위해 여전히 의미합니까? –

+1

많은 프로세서가이를 구현합니다. 언어로 제공하는 것이 좋습니다. 나는 IMP 연산자가있는 1970 년대의 언어를 사용했습니다. – EJP

답변

5

이 항목은 튜링 완전성과 전혀 관련이 없습니다.

rot 작업은 편의성과 효율성을위한 것입니다. 그것은 swap를 사용하여 정의 될 수있다 :

: rot (a b c -- b c a) >R SWAP R> SWAP ; 

pickroll는 리턴 스택 (이들 >RR> 동작), 또는 임의의 다른 스택을 사용하여 구현 될 수있다.

스택은 메모리 액세스 단어를 사용하여 구현할 수 있습니다.