【发布时间】:2016-09-06 06:28:26
【问题描述】:
我有一个数组val x : Array[Double],并且想检查一个函数的前提条件,即每个x(i) <= x(i+1) 对所有i。在 Scala 中使用函数式编程的方法是什么。我找了例如foldLeft 或 foldRight 但它们会累积而不是访问每一对相邻元素。
【问题讨论】:
-
在 Haskell 中,你会
zip一个包含自身的列表,以便获得成对的相邻元素。不确定它在 Scala 中是否同样优雅。 -
为什么内部带有while循环的普通旧“def isMonotonic(...)”是“不雅”的?一个人不必使用那些低效的拉链/滑动来“发挥作用”。只要你的函数是纯的,就可以了。实用性应该是目标,而不是“优雅”。
-
OK 去掉了优雅的词 .. 我对函数式表单解决方案很感兴趣。功能对我来说很优雅的原因也许是个人的事情,但我想与更好的意图交流有关 = 优雅
-
@Bergi
(vs, vs.view.drop(1)).zipped.forall(_ < _)。视图只管理索引,zipped不构建任何东西。
标签: scala