俺の無名関数が何かおかしい
適当な定数を定義する(なくてもいいんだけど、わかりやすさ的に定義したい)。
a <- 3
そして、以下のような無名関数かつクロージャーを使ったコードを実行してみる。
> g1 <- function(y){function(x){x+y+a}}(1) > g2 <- (function(y){function(x){x+y+a}})(1) > g1(7) [1] 11 > g2(7) [1] 11
・・・うん、ちゃんと動いてる。
しかし、無名関数の引数をなしにすると、括弧をつけないとだめになる。
> f1 <- function(){function(x){x+a}}() > f2 <- (function(){function(x){x+a}})() > f1(7) Error in f1(7) : unused argument (7) > f2(7) [1] 10
なんだこれ、評価順序の問題か?
> f1 function(){function(x){x+a}}() > f2 function(x){x+a} <environment: 0x12230260>
・・・評価されてねぇのか。