What you've posted doesn't make sense. If corModelSpec was the value you'd specified, it's a list not a symbol.
From what you've described (because the strcat would fail if it was a list), you must have:
I've no idea why you have it as a string. Or maybe it really is a symbol, but that would be very odd indeed:
stringToSymbol(corModelSpec) =>\(\(\"\/home\/bin\/toplevel\.scs\"\ \"top_sf\"\)\)
If it was a list, this would be easy:
corModelSpec='(("/home/bin/toplevel.scs" "top_sf"))cadar(corModelSpec) => "top_sf"
This is equivalent to car(cdr(car(corModelSpec))) - the car is the first element in the list, and cdr is the tail of the list.
If you really do have it as a symbol, then you should take a serious look at the code and pick an appropriate data structure. But you could get it into a list using:
No, it's because your code is doing this:
You've quoted the variable name, so type is returning the type of its argument, which is a symbol. If it wasn't quoted, you'd get the type of the value of the variable which would be list for the first and fixnum or flonum for the second.