在 haskell 中,如何从十进制数生成二进制数字?

In haskell how can I make binary digits from a decimal number?

实现Bin函数,returns一个非负整数的二进制数倒序!

示例:

Bin :: Integer -> [Int]
Bin 0 = []
Bin a `div` 2 = b
Bin a `mod` 2 = c

我想将我的除法结果返回给 Bin 函数并再次 mod 等等。 我该如何解决这个问题?我能得到一些帮助吗?

只有一个参数,所以bin的实现是这样的:

bin :: Integer -> [Int]
bin 0 = []
bin n = …

我们可以用 divMod :: Integral a => a -> a -> (a, a) 确定模并将数字除以二,我们可以使用 where 子句来设置变量 dm:

bin :: Integer -> [Int]
bin 0 = []
bin n = …
    where <b>(d, m) = divMod n 2</b>

我们不能直接使用 m,因为这是 Integer,而不是 Int,我们可以使用 fromIntegral :: (Integral a, Num b) => a -> bIntegerInt.

因此,我们需要构建一个列表,其中 m 作为该列表的元素,并使用递归来确定列表的其他项。因此 部分应该构建这样的列表。我把它留作练习。提示:您可以构建一个列表,其中 x 作为第一个项目, xs 作为剩余项目的列表, (x:xs).