下編譯:編譯問題使用上設置scalaz的MA的方法,但只是罰款使用斯卡拉的Beta1和scalaz快照5.0沒有列出
val p1: Int => Boolean = (i : Int) => i > 4
val s: List[Int] = List(1, 2, 3)
val b1 = s ∃ p1
然而,這並不:
val s: Set[Int] = Set(1, 2, 3)
val b1 = s ∃ p1
我得到的以下錯誤:
Found: Int => Boolean
Required: Boolean => Boolean
的∃
方法的簽名是:
def ∃(p: A => Boolean)(implicit r: FoldRight[M]): Boolean = any(p)
而且在範圍內應該有一個隱含的SetFoldRight
。方法完全一樣:∀
,∋
和∈:
- 發生了什麼?
我明白了 - 我知道這與Set擴展'A => Boolean'的事實有關。你指定的隱式從'Function' [I,R]'創建一個'MA [M [_],A]'。 'M [_]'被推斷爲'PartialApply1Of2',它使得MA的第二個參數爲'R'。在這種情況下,'R'當然是'布爾'的'Function1'的返回類型。 – 2010-04-21 14:28:47