# Check if all elements of list are prime in Raku

The answers above are all helpful, but they fail to explain why your solution does not work. Basically reduce is not going to apply a function (in your case, is-prime) to every member of a list. You want map for that. The error says

```
Calling is-prime() will never work with signature of the proto ($, *%)
```

Because `reduce`

expects an infix, thus binary, function, or a function with two arguments; what it does is to apply them to the first pair of elements, then to the result and the third element, and so on. Last statement does not work for a similar reason: you are calling is-prime with a list argument, not a single argument.

You're basically asking: are there any elements in this list which are **not** prime? I would write that as:

```
say "not all prime" if @g.first: !*.is-prime;
```

Please note though, that apparently **1** is *not* considered prime according to the `is-prime`

function:

```
say 1.is-prime; # False
```

so the `first`

would trigger on the **1** in your example, not on the **4**.

There are of course may ways to do this. A very explicit way is using a for loop:

```
for @g -> $g {
if $g.is-prime {
say $g;
}
}
```

Or with a grep (you could leave the $_ implicit):

```
@g.grep({ $_.is-prime }).say
```

Both above are assuming you really want to filter the primes out. Of course you can also really *check* each number and get a boolean:

```
@g.map({ .is-prime }).say
```