/** This is a solution for the Rosetta Code problem "emirp primes". An emirp (prime spelled backwards) are primes that when reversed (in their decimal representation) are a different prime. (This rules out palindromic primes.) https://rosettacode.org/wiki/Emirp_primes */ isEmirp[x] := { if isPrime[x] { s = toString[x] rev = reverse[s] return s != rev and isPrime[parseInt[rev]] } return false } // Functions that return finite and infinite enumerating expressions of emirps emirps[] := select[primes[], getFunction["isEmirp", 1]] emirps[begin, end] := select[primes[begin, end], getFunction["isEmirp", 1]] println["First 20: " + first[emirps[], 20]] println["Range: " + emirps[7700, 8000]] println["10000th: " + last[first[emirps[], 10000]]]