Ваш код в основном правильный. Это еще один способ сделать то же самое:
let inline (|>!) v f = f v ; v // tee operator
let vowels = ['a';'e';'i';'o';'u']
let if_vowel c = vowels |> List.contains c
text
|> Seq.filter if_vowel
|>! (Seq.length >> printfn "vowels: %d")
|> Seq.countBy id
|> Seq.sort
|> Seq.iter (fun (c, n) -> printfn "%c: %d" c n)
Вывод аналогичен, но не совсем совпадает с вашим, потому что он показывает только те гласные, которые присутствуют.
Попробуйте WWW :: Selenium , который использует ваш браузер (через Perl) для обработки JavaScript.
Возможно, вы сможете использовать JavaScript :: SpiderMonkey .