Это понимание списка, а в F # оно выглядит как две последние строки ниже:
// stub out since dunno implementation
let count (c:char) (s:string) = 4
let lowers (s:string) = 10
// your code
let percent a b = (float a / float b) * 100.
let freq ws = [for x in ['a'..'z'] do
yield percent (count x ws) (lowers ws)]
В более общем смысле, я думаю, что представления списка Хаскелла имеют форму, предложенную в приведенном ниже примере, и показан соответствующий F #.
// Haskell
// [e(x,y) | x <- l1, y <- l2, pred(x,y)]
// F#
[for x in l1 do
for y in l2 do
if pred(x,y) then
yield e(x,y)]