这是问题。
我有这个类型集:
type Set = Int => Boolean
我可以这样使用:
val belowNegFive: Set = (i) => i < -5
belowNegFive(10)
我的意思是返回一个布尔值,具体取决于元素 10 是否属于 -5 以下的数字集。
- 我有这段代码,它返回其中的子
s
集p
。
def filter(s: Set, p: Int => Boolean): Set = (e: Int) => s(e) && p(e)
Q1:我怎么知道 p(e) 告诉我 int e 满足谓词 p?
s
我有这个 fc,它返回是否满足中的所有有界整数p
。
def contains(s: Set, elem: Int): Boolean = s(elem) val bound = 1000 def forall(s: Set, p: Int => Boolean): Boolean = { def iter(a: Int): Boolean = { if (a > bound) true else if (contains(s, a) && !p(a)) false else iter(a+1) } iter(-bound) }
Q2:为什么所有的 a > bound 默认都简单地满足谓词的条件?或者 true 只是一个停止条件?我不确定为什么这个 fc 不返回无限循环。只是一个无限的布尔值列表,最后一个布尔值对于所有 a > 边界都是“真、真、真……”。
Q3:而且我看不到它在结果布尔值之间使用 && 的哪一点来表示是,所有有界整数都s
满足p
。
谢谢你