In elisp, symbols serve as fundamental data structures that are more foundational compared to strings. This distinction often caused confusion for me until my encounter with the read function.

 ~ $ (type-of (read))
 symbol

The fact that the read function yields symbols instead of strings from user-input was a delightful revelation. This discovery convinces me that the fundamental nature of symbols in elisp when compared to strings.

  • AbstProcDo@alien.topOPB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Interesting. It’s intelligent capability to discern and identify numbers, strings, and symbols. What I tried is to feed to minibuffer word string.

    • 7890yuiop@alien.topB
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago
      (type-of (read "foo"))
      symbol
      
      (type-of (read "\"foo\""))
      string
      
      (type-of (read "42"))
      integer
      
      (type-of (read "[42]"))
      vector
      
      (type-of (read "(42)"))
      cons
      

      Etc, etc…

      The lisp reader reads text and it produces lisp objects of various types (which might later be evaluated as code).

    • arthurno1@alien.topB
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      What I tried is to feed to minibuffer word string.

      So you have called:

      M-: (type-of (read)) RET string RET?
      

      You have just created a temporary symbol named “string”. You can try this to see for yourself:

      M-: (symbol-name (type-of (read))) RET
      

      If you want a string object out of “string”, you will have to quote it in the minibuffer too:

      M-: (type-of (read)) RET "string" RET?
      

      I think you should have not downvoted /u/lispm below (or whomever it was); he has given a few very good questions to get you going on in exploring those things on your own.