gpt4 book ai didi

haskell - int 类型转换

转载 作者:行者123 更新时间:2023-12-04 13:08:28 26 4
gpt4 key购买 nike

1) 你如何从一个 Int 转换输入 Num类型?

之前也有人问过类似的问题,答案是(就像在 Haskell wiki 上一样)是使用 fromIntegral . fromIntegral返回 Num类型,所以我必须将其转换为我想要的格式。

我需要一个Word16并将其转换为 Int64所以我正在做以下事情

let valueLength = (fromIntegral(tagLength) :: Int64)

在哪里 tagLength有类型 Word16
这种方法正确吗?

2)你如何安全地处理类型转换?

来自我相信整数的 Java 背景 Short , IntLong我可以使用 short作为 int但不是相反。在 Haskell 虽然如果我写
256 :: Word8

ghci它返回 0。

最佳答案

I need to take a Word16 and convert it to a Int64 so I am doing the following:

let valueLength = (fromIntegral(tagLength) :: Int64)

Is this approach correct?



让我们问GHC!
Prelude Data.Word Data.Int> :t fromIntegral :: Word16 -> Int64
fromIntegral :: Word16 -> Int64 :: Word16 -> Int64

看起来不错。

How do you handle type conversion safely?



Haskell 没有类型转换。完全没有。所有“转换”都必须通过编写一个从一种类型“转换”到另一种类型的函数来完成。

If I write 256 :: Word8 in ghci it returns 0.



数字文字是多态的。对于没有小数点的东西, fromInteger隐式使用:
Prelude> :t 256
256 :: Num a => a
Prelude> :t fromInteger
fromInteger :: Num a => Integer -> a
Prelude> fromInteger (256 :: Integer) :: Word8
0

如果单态类型的数字文字超出该类型的范围,可能会出现警告或其他内容;也许您应该在 GHC 的错误跟踪器上提交功能请求。

关于haskell - int 类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15461316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com