我正在尝试通过翻译我很久以前编写的一些 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']]
我已经做到了:
let percent a b = (float a / float b) * 100.
虽然我不喜欢必须拥有 . 100之后。
我正在执行的操作的名称是什么freqs
,以及如何将其转换为 F#?
Edit: count
and lowers
are Char -> String -> Int
and String -> Int
分别,我已经翻译了这些。
这是一个列表理解,在 F# 中它看起来像下面的最后两行:
// stub out since don't know the 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)]
更一般地说,我认为 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)]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)