我是SML的新手。我正在尝试使用map和filter编写一个函数来从列表中添加对,其中x和y大于n。代码编译没有任何错误,但是,当我执行函数$align='C'
时,我收到一个空列表作为输出。
我的SML代码如下:
addPairsGreaterThan 3 [(1,2), (3,3), (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 其中
List.filter (fn (x,y) => x > n andalso y > n)
和fun addPairsGreaterThan n =
map op+ o List.filter (fn (x,y) => x > n andalso y > n)
。括号不是必需的,所以这看起来有点复杂:
sudo python3 -m pip install pandas_datareader