I created two separate terms regarding removing quoting levels.
One was unquote, e.g. it removes one level:
>> unquote first ['''a]
== ''a
It has a /DEPTH refinement where you can say how many levels to remove (so the default depth is 1). If there aren't enough levels it will error.
The other operation was DEQUOTE, which would remove all the quoting levels...it would not complain if something was not quoted:
>> dequote first ['''a]
== a
>> dequote first [a]
== a
I've messed this up a lot and used the word DEQUOTE where I meant to say UNQUOTE. So those words are too close to each other. There's really no great argument for why the meanings wouldn't be the same or swapped. (e.g. "Why would something called UNQUOTE return a thing that still has quotes on it?")
Regardless of any counter-arguments, I do feel that UNQUOTE makes sense at the end of the day as removing one level of quote.
A refinement to UNQUOTE as something like UNQUOTE/FULLY (more descriptive) or UNQUOTE/ALL (shorter at the cost of clarity) might work:
>> unquote/fully first ['''a]
== a
But it's always a bit unpleasing when you offer refinements that can't be mixed, like /DEPTH and /FULLY would be incompatible.
Also I think this might be kind of a common operation, to ask for the non-quoted essence of a value.
Perhaps NONQUOTED?
>> nonquoted first ['''a]
== a
But I had aimed that QUOTED and such would be type modifiers, so QUOTED INTEGER! would give you a datatype representing quoted integers.
While all this makes me feel a bit more like excusing DEQUOTE, I have made too many mistakes mixing them up, and if I make them then other people certainly will...