I am not familiar with Perl 6, nor with list comprehensions, but I am wondering if this is really more readable than the 'traditional' way of looping through the prime numbers and appending to the list, like this:
strongs=[]
weaks=[]
n=1
AskedNumbers=10
while len(strongs) < AskedNumbers:
if p(n) * 2 > ( p(n-1) + p(n+1) ):
if len(strongs) < AskedNumbers:
strongs.append(p(n))
if p(n) * 2 < ( p(n-1) + p(n+1)):
if len(weaks) < AskedNumbers:
weaks.append(p(n))
n+=1
print(strongs)
print(weaks)
I am not familiar with Perl at all, though I am with list comprehensions, and FWIW I find the code very readable. (Though the lambda syntax was not obvious at first.)
What I would worry about is performance. But we are talking about top ten numbers, so whatever. (If it does actually matter, just precompute the lists.) But for larger sets I would check how is-prime is actually implemented :)
That does lots of redundant prime checks, and presumed strong primes are rarer than weak primes, which is _implied_ in the article, but reading your code, nobody would know that (I'm not even sure I know it, really).