#1。Curry の 2 番目の引数を無視し、改行をハード コードします。
の最後の引数をcat
無名関数にハードコーディングしてカリー化するこれを試してください。Curry
最初の引数以降は、実際には引数を使用しません。
catnip <- Curry(function(...) cat(..., "\n") )
#2。無名関数をカリー化して関数を作成する
cat
の引数を並べ替える無名関数を使用して、 の最後の引数をカリー化する 2 番目のソリューションを次に示しcat
ます。
catnip2 <- Curry(function(last.arg, ...) cat(..., last.arg), "\n")
# test
catnip2("hi", "there")
#3。さらに基本的な関数をカリー化して目的の関数を作成する
おそらく、これらすべての本当のポイントは、基本的なコンポーネントを取得して、それらをカリー化して、必要なものを取得する方法を確認することです。したがって、一般的なものを定義してlast.arg.fun
から、そのカレーによって目的の関数を作成できます。
last.arg.fun <- function(FUN, last.arg, ...) FUN(..., last.arg)
catnip3 <- Curry(last.arg.fun, cat, "\n")
# test
last.arg.fun(cat, "\n", "hi", "there")
# test
catnip3("hi", "there")
last.arg.cat
ある時点で必要な場合は、次の 2 つの手順で行うことができます。
last.arg.cat <- Curry(last.arg.fun, cat)
catnip4 <- Curry(last.arg.cat, "\n")
# test
last.arg.cat("\n", "hi", "there")
# test
catnip4("hi", "there")
各テストでは、hi there が改行で終わるという行が生成されることに注意してください。
編集:より多くのソリューション。