将 filter/reduce 应用于字典会使 Swift 编译器崩溃:我的错误还是错误?

Applying filter/reduce to dictionary makes Swift compiler crash: my mistake or bug?

我想获得字典中键与指定键不同的所有这些值的最大值,并以函数式方式执行此操作。这是我的代码的近似值:

let d = [1:2, 2:3, 3:4]
let x = d.filter() { (key, _) in key != 1 }
let y = x.map() { (key, value) in value }
let z = y.reduce(0) { (max, value) in max(value, max) }
assert(z == 4)

不幸的是,计算 z 的行使 Swift 编译器(来自最新的 Xcode 7 beta)在其 CanTypeVisitor 中崩溃。

我在这样应用 filter/reduce 时是否犯了一个(明显的)错误(也许有更简洁的函数形式)?

这个问题显然与 max 的双重使用有关。如果我用这一行替换有问题的行,编译器将不会崩溃:

let z = y.reduce(0) { (max, value) in (value > max) ? value : max }