添加大于n个过滤器的对

时间:2018-04-25 12:18:09

标签: dictionary filter sml

我是SML的新手。我正在尝试使用map和filter编写一个函数来从列表中添加对,其中x和y大于n。代码编译没有任何错误,但是,当我执行函数$align='C'时,我收到一个空列表作为输出。

我的SML代码如下:

addPairsGreaterThan 3 [(1,2), (3,3), (1,1)]

1 个答案:

答案 0 :(得分:0)

  

[...] 从列表中添加对,其中x和y大于n。

     

[...] addPairsGreaterThan 3 [(1,2), (3,3), (1,1)],我收到一个空列表作为输出。

这些对中没有一个(或任何)部分都大于3.所以[]似乎是正确的。

您的功能似乎有效,但是:

  • 你指的是一个函数filter。你的意思是List.filter
  • 您可以将intPairs重命名为pairs; Hungarian notation is bad
  • addPairs辅助函数等同于op+,可替换为helperList
  • fun addPairsGreaterThan n pairs = map op+ (List.filter (fn (x,y) => x > n andalso y > n) pairs) 临时绑定是不必要的。

这是一个重写版本:

map op+

由于此定义采用 f(x)= g(h(x))的形式,您可以将其定义为 f = g o h 其中

  • g List.filter (fn (x,y) => x > n andalso y > n)
  • h fun addPairsGreaterThan n = map op+ o List.filter (fn (x,y) => x > n andalso y > n)

括号不是必需的,所以这看起来有点复杂:

sudo python3 -m pip install pandas_datareader