
"mandelbrot-test.rkt" Fixed error in `array-count' revealed by correctly failing test Simplified Mandelbrot test
28 lines
995 B
Racket
28 lines
995 B
Racket
#lang typed/racket/base
|
|
|
|
(require "array-struct.rkt"
|
|
"array-fold.rkt"
|
|
"array-pointwise.rkt")
|
|
|
|
(provide array-count)
|
|
|
|
(: array-count
|
|
(All (A B T ...)
|
|
(case-> ((A -> Any) (Array A) -> Index)
|
|
((A B T ... T -> Any) (Array A) (Array B) (Array T) ... T -> Index))))
|
|
(define array-count
|
|
(case-lambda:
|
|
[([f : (A -> Any)] [arr0 : (Array A)])
|
|
(assert (array-all-sum (inline-array-map (λ: ([a : A]) (if (f a) 1 0)) arr0) 0) index?)]
|
|
[([f : (A B -> Any)] [arr0 : (Array A)] [arr1 : (Array B)])
|
|
(assert
|
|
(array-all-sum (inline-array-map (λ: ([a : A] [b : B]) (if (f a b) 1 0)) arr0 arr1) 0)
|
|
index?)]
|
|
[([f : (A B T ... T -> Any)] [arr0 : (Array A)] [arr1 : (Array B)] . [arrs : (Array T) ... T])
|
|
(assert
|
|
(array-all-sum (apply array-map
|
|
(λ: ([a : A] [b : B] . [ts : T ... T]) (if (apply f a b ts) 1 0))
|
|
arr0 arr1 arrs)
|
|
0)
|
|
index?)]))
|