-
Notifications
You must be signed in to change notification settings - Fork 62
A language of moral conviction must be total #41
Description
Consider:
def procrastinator():
n = 41
while True:
pass
swear n == 42
return nThis function has sworn a blatantly false oath — n is 41 and will never be 42. Yet it evades all punishment by hanging forever before the oath is ever evaluated. The lie exists in plain sight, but Vigil's justice never reaches it.
This is arguably worse than a broken oath. A liar at least reveals their nature eventually. A non-terminating function is a coward — it avoids moral evaluation altogether by refusing to finish.
A truly vigilant language should not tolerate functions that can run indefinitely. If I implore that a function returns a value, I am implicitly imploring that it returns at all. An infinite loop violates every oath by never reaching any of them.
A programming language for honest people must be total. Every function must terminate. Vigil currently permits moral evasion through non-termination — the computational equivalent of fleeing the jurisdiction.