-- Extract all twin primes from the infinite list of prime numbers with pattern matching! def twinPrimes : [(Integer, Integer)] := matchAll primes as list integer with | _ ++ $p :: #(p + 2) :: _ -> (p, p + 2) -- Enumerate first 10 twin primes. assertEqual "first 10 twin primes" (take 10 twinPrimes) [(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61), (71, 73), (101, 103), (107, 109)]