Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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 有没有一种方法可以实现积分。fromEnum`适用于所有整数?_Haskell - Fatal编程技术网

Haskell 有没有一种方法可以实现积分。fromEnum`适用于所有整数?

Haskell 有没有一种方法可以实现积分。fromEnum`适用于所有整数?,haskell,Haskell,好 好 不太好 我正在对数据进行一些位处理。位并寻找一种通用方法来组合由Bool、Int和Integer表示的字段整数字段可能非常大 使现代化 我尝试做的总体事情如下所示: λ (fromIntegral . fromEnum) 100000000000000000000 7766279631452241920 如果可能的话,我想计算出toBits/from integral。那么from enum将转到Int,因此您总是会在某个地方达到它的边界。-但是你到底想在这里做什么呢?从最后两个例子来

不太好


我正在对
数据进行一些位处理。位
并寻找一种通用方法来组合由
Bool
Int
Integer
表示的字段<代码>整数字段可能非常大

使现代化 我尝试做的总体事情如下所示:

λ (fromIntegral . fromEnum) 100000000000000000000
7766279631452241920

如果可能的话,我想计算出
toBits/from integral

那么
from enum
将转到
Int
,因此您总是会在某个地方达到它的边界。-但是你到底想在这里做什么呢?从最后两个例子来看,看起来你只想在数字上显示
id
?@CarstenKönig请查看我的更新。
Bool
Int
,和
Integer
是一组小类型,你自己创建一个类怎么样?@luqui好主意。我试试看。
> (fromIntegral . fromEnum) (10000 :: Int)
10000
λ (fromIntegral . fromEnum) 100000000000000000000
7766279631452241920
fromExchange :: Exchange -> Integer
fromExchange e = foldr combineBits 0 collectBits
  where
    combineBits = ((.|.) . ($ e))
    collectBits =
      [ (`shiftL` 127) . toBits . doCommand
      , (`shiftL` 126) . toBits . readComplete
      , (`shiftL` 116) . fromIntegral . destId
      , (`shiftL` 64) . address
      , payload
      , (`shiftL` 108) . fromIntegral . mask
      , (`shiftL` 104) . fromIntegral . fromCommand . command
      ]

toBits :: Enum a =>
          a -> Integer
toBits = fromIntegral . fromEnum