HyperTalk の repeat文の刷り込み?

loop do
end

とすべきところを、どういうわけか

while
end

とやってバグを作り込んでいた。しかも、while の次のステートメント(ループの条件式と見なされていた)が真と評価できるものを返していたせいで、これが数週間もテストを通っていた。おいおい(;^ω^)

コードをいじった結果として while の次のステートメントが場合によって偽と評価されるようになり、テストがコケてくれたことでようやく(ついさっき)問題が発覚した。

スタックトレースから簡単に問題の位置を特定できたものの、これがまたなかなか気付かないw while をいくら凝視してもそれがおかしく見えないという。loop do の存在も完全に頭から消え去っていた。やばい。

しかしなんでまた無意識のうちに、「条件式を省いたら無限ループ」てなことをやってたんだろうか。

思い当たることといえば、自分が初めて覚えたプログラミング言語である HyperTalk の repeat文?

自分がこれまでにやったことのある言語で、条件式のないループ構文が無限ループになるのってこれだけのような気がする。確か、

repeat for num times
end repeat

repeat with var = start to end
end repeat

repeat while condition
end repeat

repeat until condition
end repeat

という構文であって、

repeat
end repeat

で無限ループになったはずだ。

これはもしかして三つ子の魂百までというやつなんだろうか? 自分が最初に覚えたプログラミング言語による刷り込みの効果。

だとすると……ちょっぴり嬉しいような気も。それだけの数のループを、自分は HyperTalk の repeat文で書いてきたってことなのだ。