在 Scala 中,我有这个type Set = Int => Boolean
我如何/我可以在 Scheme 中模仿它吗?
例如,在 Scala 中,我有
def singletonSet(elem: Int): Set = (x: Int) => (x == elem)
def union(x: Set, y: Set): Set = (z: Int) => (x(z) || y(z))
def forall(s: Set, p: Int => Boolean): Boolean = {
def iter(a: Int): Boolean = {
if (a > bound) true
else if (s(a) && !p(a)) false
else iter(a + 1)
}
iter(-bound)
}
在计划中,这是我到目前为止所拥有的:
(define (singletonSet elem) (lambda (x) (= x elem)))
(define (union x y) (lambda (z) (or (x z) (y z))))
(define bound 1000)
(define -bound 1000)
(define (forall s p)
(local ((define (iter a)
(cond
[(> a bound) true]
[(and (s a) (not (p a))) false]
[else (iter (+ a 1))])))
(iter -bound)))
(forall v (lambda (x) (= (modulo x 3) 0)))
那么你可以type Set = Int => Boolean
在方案/球拍中做吗?