gpt4 book ai didi

haskell - 在 Haskell 中反转二进制数

转载 作者:行者123 更新时间:2023-12-04 18:55:46 25 4
gpt4 key购买 nike

我定义了二进制数的数据类型如下

data Bin = Nil | O Bin | I Bin 
deriving (Show, Eq)

我想定义一个函数 reverse::Bin -> Bin 这样当我像这样输入时

reverse (I (O (I (I Nil)))) 我应该得到输出I (I (O (I Nil))) 这意味着反转为输入,任何人请给我提示我如何才能做到这一点?

最佳答案

你为什么要这样做?为什么不是这样的:

data Bit = I | O
newtype Bin = List Bit

那你直接用Prelude的反操作就可以了...

编辑Prelude 函数的简单替换:

reverse x = rev x []
where
rev [] a = a
rev (x:xs) a = rev xs (x:a)

产量:

reverse x = rev x Nil
where
rev Nil a = a
rev (I xs) a = rev xs (I a)
rev (O xs) a = rev xs (O a)

问题是,您的类型与列表类型非常相似:

data List a = a : (List a) | []

因此 List 例程的逻辑直接适用于您的类型。

关于haskell - 在 Haskell 中反转二进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1897876/

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