是否存在filter
函数的无点函数,以查找列表中对的第一个元素的最小值?例如:
findMinimum xs = filter ((== minimum (map fst xs)) . fst ) xs
-- example:
findMinimum [(0, 0), (0, 1), (2, 2), (3, 2), (1, 4)] = [(0, 0), (0, 1)]
如何将findMinimum
函数转换为无点:
findMinimum = ??
答案 0 :(得分:6)
pointfree.io输出此消息,效果还不错。不过,我仍然更喜欢原始代码。
goodModelArrayList = new ArrayList<>();
答案 1 :(得分:4)
另一种实现方式
df$dist = apply(df[-1],1,function(x) sum(mat[t(combn(c(1:length(x))[as.logical(x)],2))]))
> df
caseid v1 v2 v3 v4 dist
1 one 0 1 0 1 0.8
2 two 1 1 0 0 0.5
3 three 0 1 1 1 1.3
4 four 1 0 1 1 0.9
首先排序和分组,然后选择第一个子列表。也许您可能想显式处理空列表。
答案 2 :(得分:2)
将对放入Arg
中,就可以对第一个元素进行排序,可以利用以下元素:
import Data.Semigroup (Arg(..))
import Data.Ord (comparing)
findMinimum :: Ord a => [(a, b)] -> (a, b)
findMinimum = minimumBy (comparing (uncurry Arg))