3 ms·
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 = fu
by canjobear 5y ago
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)
- uryga 5y agoyeah, the intersection of lazy evaluation and side-effects (incl. errors/exceptions) gets confusing, you definitely have to be there to help the student out of a jam. but i think it's useful to start out pretending R follows strict evaluation (because it's natural[1]) and then, once the student gets their bearings, you can introduce laziness. --- [1] well, not "natural", but aligned with how math stuff is usually taught/done. in most cases, when asked to evaluate `f(x+1)`, you first do `x+1` and then take `f(_)` of that.