Could you define "declarative suicide", please?
I'm also not very clear on why you'd consider the problem that I'm demonstrating as an example of "kamikaze coding". Imagine a script in which you've already declared a lexically-scoped $foobar; a couple of hundred lines later, you decide that you need a new variable name, and $foobar seems like a reasonable thing. Create it, and - presto - you've destroyed the previous one. Is that "kamikaze coding"? Or is it a language problem?
#include <stdio.h>
int main(void) {int x = 1; int x = 10; printf("%d\n", x);}
ben@feynman:/tmp$ cc x.c
x.c: In function ‘main’:
x.c:3:33: error: redefinition of ‘x’
x.c:3:22: note: previous definition of ‘x’ was here
--
I hate storms, but calms undermine my spirits.
-- Bernard Moitessier, "The Long Way"