Hi,
All symbols are interned in the Symbol table. If one does (#foo , #bar , #baz) and each returned value would be a symbol, then both #foobar and #foobarbaz would be registered in the symbol table.
I would guess that's why the concatenated value is a string and not a symbol, to avoid registering many unused symbols. But maybe I am wrong.
If for your use case you need to concatenate symbols and get a symbol out of it, you can define a new method in Symbol to do what you want.
For example:
Symbol >> ,, arg
^ (self , arg) asSymbol
Then
Answers directly the symbol #foobar.
Best,