**Statutory Warning**: *Spoilers ahead!*

Finally, we have a one-liner:

```
euler29 = length $ L.nub $ [a ^ b | a <- [2 .. 100], b <- [2 .. 100]]
```

(where `L`

is `Data.List`

)

*P.S.* I did make a dumb error by initiall writing this as two functions, with the second one taking `Int`

instead of `Integer`

, which (I'm disappointed to say) resulted in everything silently overflowing to negative numbers.