Tag: 的高阶函数

R中更高级别的function – 是否有正式的撰写操作员或咖喱function?

我可以在R中创build一个组合操作符: `%c%` = function(x,y)function(…)x(y(…)) 要这样使用: > numericNull = is.null %c% numeric > numericNull(myVec) [2] TRUE FALSE 但是我想知道是否有一套官方的函数来做这种事情和其他的操作,例如在R中进行。很大程度上是为了减less我的代码中括号,函数关键字等的数量。 我的咖喱function: > curry=function(…){ z1=z0=substitute(…);z1[1]=call("list"); function(…){do.call(as.character(z0[[1]]), as.list(c(eval(z1),list(…))))}} > p = curry(paste(collapse="")) > p(letters[1:10]) [1] "abcdefghij" 例如聚合这是特别好的: > df = data.frame(l=sample(1:3,10,rep=TRUE), t=letters[1:10]) > aggregate(df$t,df["l"],curry(paste(collapse="")) %c% toupper) lx 1 1 ADG 2 2 BCH 3 3 EFIJ 我发现它比以下更优雅和可编辑: > aggregate(df$t, df["l"], […]

什么是paramorphisms?

通过阅读这篇经典论文 ,我被困在paramorphisms。 不幸的是,该部分是非常薄,维基百科页面没有说什么。 我的Haskell翻译是: para :: (a -> [a] -> b -> b) -> b -> [a] -> b para f base = h where h [] = base h (x:xs) = fx xs (h xs) 但是我并不这么认为 – 我没有任何types签名或期望结果的直觉。 什么是paramorphism,什么是一些有用的例子在行动? 是的,我已经看到了这些 问题 ,但是它们并没有直接涵盖副变形,只是指向可能有助于引用的资源 ,而不是作为学习材料。