(setq foo '((x) (* x x)))
Assigns the structure of a function to symbol foo, albeit not optimized.
(foo 2) >> 4
(mapcar '((x) (* x x)) '(2 4 6)) >> *crash*
Doesn't work because '((x) (* x x)) when evaluated returns the structure of a function - not a quoted function. Mapcar wants a quoted function.
(mapcar 'foo '(2 4 6)) >> (4 16 36)
Is functionally the same as:
(mapcar ''((x) (* x x)) '(2 4 6)) >> (4 16 36)
Works because ''((x) (* x x)) when evaluated returns the structure of a quoted function.
Hope that was clear/helps; cheers.