Digit Power Sum with BigInteger
It's quite common to convert a number to a string to get the digits, and most of the times, it ought to work, but it's a hack, instead of modelling what should happen.

Here's another way to do it, which deliberately separates integers into its digits.

let rec digits i =
    let tens = i / 10I
    if tens = 0I
    then [i]
    else
        let ones = i % 10I
        (digits tens) @ [ones]


The rest is easy:

let euler16 x y = pown x y |&gt; digits |&gt; List.sum


Some examples from F# Interactive:

&gt; euler16 2I 15;;
val it : System.Numerics.BigInteger = 26 {IsEven = true;
                                          IsOne = false;
                                          IsPowerOfTwo = false;
                                          IsZero = false;
                                          Sign = 1;}
&gt; euler16 2I 1000;;
val it : System.Numerics.BigInteger = 1366 {IsEven = true;
                                            IsOne = false;
                                            IsPowerOfTwo = false;
                                            IsZero = false;
                                            Sign = 1;}