Compare the package macro:
(package
(name "guile-sdl2")
(version "0.7.0")
(source (git-checkout (url (dirname (current-filename)))))
…)
With a package function that takes an alist: (package
`((name . "guile-sdl2")
(version . "0.7.0")
(source . ,(git-checkout (url (dirname (current-filename)))))
…)
Notice how the alist has to be backquoted so that you can put a comma in front of everything that needs to be evaluated, and how every entry in the alist has to be a pair rather than a list which requires a dot on every line. Which would you rather type out a hundred thousand times? Which would you prefer to teach to new contributors? Which would you prefer to answer questions about on a mailing list?