Как показал @Jeff, вы можете сделать это в шести символах, так что это не обязательно лучший вопрос, чтобы спросить, как "сделать это в духе функционального программирования".
Я показываю другой способ, который не особенно «функционален» (поскольку он использует массивы, но, по крайней мере, он не мутирует), но, по крайней мере, показывает набор шагов.
let s = "Hello, world!"
// get array of chars
let a = s.ToCharArray()
// get sub array (start char 7, 5 long)
let a2 = Array.sub a 7 5
// make new string
let s2 = new string(a2)
printfn "-%s-" s2 // -world-