In AutoLISP every variable is assigned a type according to what is in the variable, for example, if you type:
(setq A "a")
The type of variable A is, is a STRing
(setq A 1)
The type of variable A is, is an INTeger
(setq A 1.0)
The type of variable A is, is a REAL (aka long)
(setq A '(0 1 2)
The type of variable A is, is a LIST
If you have a function and you check it, the value will be:
(setq A C:MYFUNCTION)
The type of variable A is, is an SUBRoutine
Do you get the idea?