我如何将这个Haskell翻译成F#?

And*_*ock 4 syntax f# haskell list-comprehension

我试图通过翻译我很久以前写的一些Haskell代码来学习F#,但是我被卡住了!

percent       :: Int -> Int -> Float
percent a b    = (fromInt a / fromInt b) * 100

freqs         :: String -> [Float]
freqs ws       = [percent (count x ws) (lowers ws) | x <- ['a' .. 'z']]
Run Code Online (Sandbox Code Playgroud)

我已经成功了:

let percent a b = (float a / float b) * 100.
Run Code Online (Sandbox Code Playgroud)

虽然我不喜欢必须拥有.100之后.

我正在执行的操作的名称是什么freqs,以及如何将其转换为F#?

编辑:countlowersChar -> String -> IntString -> Int分别了,我已经翻译这些.

谢谢

Bri*_*ian 13

这是一个列表理解,在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)]
Run Code Online (Sandbox Code Playgroud)

更一般地说,我认为Haskell列表推导具有下面示例所建议的形式,并且显示了相应的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)]
Run Code Online (Sandbox Code Playgroud)