Tha man pages for bash says, once a variable is marked as readonly, it cannot be unset.
Code:
typeset -r Make names readonly. These names cannot then be assigned values by subsequent assignment statements or unset.
Also unset says
Code:
unset [-fv] [name ...]
For each name, remove the corresponding variable or function. If
no options are supplied, or the -v option is given, each name
refers to a shell variable. Read-only variables may not be
unset.
Your best option would be to kill the shell, or run the commands within a subshell. Something like
Code:
[/tmp]$ {(b=8; readonly b; echo "-$b-"); b=90; echo "[$b]"; unset b; echo "[[$b]]";}
-8-
[90]
[[]]