I actually think that's a pretty good analogy for what programmers do. You program the give function to accepted the variables nominative (you), accussative(hot dog), and dative(me). Now lets say you want to create multiple functions (give, send, take) that are operators on nominative, accussative, dative and want to reuse code easily. Or you want to use your "give" function to define what a "gift" is. No problem in LISP.