无点过滤功能

时间:2018-12-19 18:46:45

标签: haskell filtering pointfree tacit-programming

是否存在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 = ??

3 个答案:

答案 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))