Calling Macro function in Velocity template
Macros are not functions; they are for rendering output. However, if you don't mind losing the type and getting the result as text...
#set( $book_list_link = "#getBookListLink( $readingTrackerResult )" )
To get rid of spaces and blank lines use multi-line comments (#* comment *#
):
#macro( myMacro $param )#*
*#the_return_value#*
*##end