Use um único RESUME para todos os estilos INTERCAL-72, se houver
Se você precisar escrever o equivalente a uma instrução "if", o método normal usando o código INTERCAL-72 é NEXTduas vezes e, em seguida, faça um cálculo RESUME. (No código moderno, geralmente um computador COME FROMé melhor, mas essa dica pressupõe que seu código prefira NEXT). Você quase certamente precisa pagar os bytes pelo primeiro NEXT, pois ele salta de um ramo do "se" para o outro. Compartilhar a segunda NEXTtambém não é trivial, a menos que você tenha muitas instruções "se" que vão para o mesmo lugar ao ver a #1. No entanto, RESUMEpode estar em qualquer lugar do programa (porque o controle o deixará instantaneamente em qualquer lugar).
Existem duas maneiras de lidar com isso. Se você tiver muitas instruções "se", RESUMEprovavelmente isso garante um número de linha de um dígito, para que sua segunda NEXTinstrução possa ser a mais curta possível. Se possível, tente transformá-lo em um computador RESUMEque ocorreria naturalmente em seu código (é certo que isso é difícil, pois é raro aparecer no "fluxo normal" do código em vez de ser NEXTeditado para ele); então, o único custo é o número da linha. Você precisará usar uma única variável booleana para todos esses NEXTs; o consenso universal aqui é usar .5, principalmente porque é a variável que a biblioteca padrão usa para valores de retorno booleanos.
Como alternativa, é possível fazer uso de um recurso não documentado (tecnicamente não documentado, porque eu inseri uma dica na documentação INTERCAL quando notei) da biblioteca padrão. Como um local central para um RESUMEé tão útil, a biblioteca padrão usa um internamente. Os números de linha em INTERCAL são globais (com namespacing convenções, mas que pode ser quebrado se você sabe o que está fazendo), para que possa NEXTdireto para a parte interna da biblioteca padrão, se você quiser, e em particular, pode NEXTa sua localização central, RESUME . Isso é suficientemente popular no código INTERCAL existente que as substituições de bibliotecas padrão tendem a implementá-lo para evitar a quebra de programas existentes.
A linha em questão é (literal ou efetivamente, dependendo da implementação):
(1001) DO RESUME .5
O principal motivo para não usar isso é o número da linha longa; se você precisar criar um monte de estruturas do tipo INTERCAL-72, será melhor usar o seu próprio para fornecer um número menor.
Claro, você pode combinar as técnicas, escrevendo algo como
(9)DO(1001)NEXT
que é apenas marginalmente mais longo do que
(9)DORESUME.5
e tem o benefício que os booleanos se tornam #2e #3(que é mais difícil de ler, mas normalmente mais fácil de gerar). Na verdade, pode até valer a pena colocar o código extra para lidar #0e #1se você vai se esforçar muito (mas calculado COME FROMprovavelmente funcionará melhor nesse caso, a menos que seus requisitos sejam muito estranhos).