比如说我们有一个功能
let list = [1,2,3]
列表map (divide 3) temp
我知道我可以将除法函数应用到列表中,如下所示:divide
但是如果我想交换传递给map (divide temp) 3
方法的参数的顺序怎么办,那么列表中的每个元素除以3,而不是3除以元素。
类似以下divide
。
此外,如果start_date = Date.today.at_beginning_of_week
end_date = Date.today.at_end_of_week
@plantings = Planting.where('planting_date_end >= ? AND planting_date_begin <= ?', start_date, end_date)
有3个参数并且列表的每个元素都需要是中间参数,那该怎么办呢?如何做到这一点?
答案 0 :(得分:2)
你可以使用divide
作为中缀运算符,将其封装在这样的反对语中
map (`divide` 3) temp
或者,如果你将来遇到一个更复杂的案例,写一个lambda(匿名函数)
map (\x -> divide x 3) temp
您可能还想查看更详细的解释https://wiki.haskell.org/Anonymous_function
答案 1 :(得分:1)
只需将函数参数设为显式lambda而不是部分应用的函数:
map (\n -> divide n 3) temp