It's true that if you write code that is pure and error-free then you will never bump up against R's strangeness.
But try out this bit of base R:
> hello = function(cats, dogs) { return(cats) }
> hello(100, honk) # where honk has never been defined
> hello(100, print("hello!"))
> hello(100)