在斯坦福斯卡拉课程中,我遇到了以下任务:
练习1 - 设置为函数:
在本练习中,我们将表示集合作为从Ints到Booleans的函数:
type Set = Int => Boolean
Run Code Online (Sandbox Code Playgroud)
a)编写一个函数"set",它接受一个Int参数并返回一个包含该Int的Set.
b)编写一个函数"contains",它将Set和Int作为参数,如果Int在Set中则返回true,否则返回false.
c)编写函数"union","intersect"和"minus",它们将两个Sets作为参数并返回一个Set.
d)你能编写一个函数"subset",它将两个Sets作为参数,如果第一个是第二个的子集,则返回true,否则返回false?
a,b和c的解决方案相当简单:
def set(i: Int): Set = n => n == i
def contains(s: Set, i: Int) = s(i)
def union(a: Set, b: Set): Set = i => a(i) || b(i)
def intersect(a: Set, b: Set): Set = i => a(i) && b(i)
def minus(a: Set, b: Set): Set = i => a(i) && !b(i)
Run Code Online (Sandbox Code Playgroud)
但d …