Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell中的类型转换_Haskell - Fatal编程技术网

Haskell中的类型转换

Haskell中的类型转换,haskell,Haskell,我知道Haskell没有演员阵容,但我有这样的表达: o = sum . takeWhile (< 10000) . filter odd . map (^2) $ [1..] 我想要双倍的结果。 我试过: 还有其他类似的事情。。。我总是出错。 我该怎么办?怎么样 g :: [Integer] -> Double g = fromInteger . sum . takeWhile (< 10000) . filter odd . map (^2) 或者,您可以通过以下方式将

我知道Haskell没有演员阵容,但我有这样的表达:

o = sum . takeWhile (< 10000) . filter odd . map (^2) $ [1..]
我想要双倍的结果。 我试过:

还有其他类似的事情。。。我总是出错。 我该怎么办?

怎么样

g :: [Integer] -> Double
g = fromInteger . sum . takeWhile (< 10000) . filter odd . map (^2)
或者,您可以通过以下方式将列表转换为总和之前的[Double]

g = sum . map fromInteger . takeWhile (< 10000) . filter odd . map (^2)
Haskell中没有泛型强制转换,但有一些函数,如fromInteger和fromRational,可以从特定类型转换为所需类型。fromIntegral的类型是 fromIntegral::Num b,Integral a=>a->b 它会将整数值转换为任何类型的数值。

如何

g :: [Integer] -> Double
g = fromInteger . sum . takeWhile (< 10000) . filter odd . map (^2)
或者,您可以通过以下方式将列表转换为总和之前的[Double]

g = sum . map fromInteger . takeWhile (< 10000) . filter odd . map (^2)
Haskell中没有泛型强制转换,但有一些函数,如fromInteger和fromRational,可以从特定类型转换为所需类型。fromIntegral的类型是 fromIntegral::Num b,Integral a=>a->b
它将整型值转换为任何类型的Num值。

Double是一种类型,而不是类型类。正确的类型签名是g::Integral c=>[c]->Double或更一般的g::Num a,Integral c=>[c]->a通常,您可以使用fromIntegral将任何整数类型转换为任何其他数字类型:g=fromIntegral。总和takeWhile@user2407038你应该把它变成一个答案@user2407038非常感谢您快速而有趣的回答。Double是一个类型,而不是一个类型类。正确的类型签名是g::Integral c=>[c]->Double或更一般的g::Num a,Integral c=>[c]->a通常,您可以使用fromIntegral将任何整数类型转换为任何其他数字类型:g=fromIntegral。总和takeWhile@user2407038你应该把它变成一个答案@user2407038非常感谢您快速而有趣的回答。非常感谢!这两种解决方案都很有效,但是,也许第一种方案最好只有一张地图。非常感谢!这两种解决方案工作得很好,但是,也许,只有一张地图,第一种更好。