小编Zin*_*ine的帖子

为什么Haskell的Data.Set不支持无限集?

在以下代码段中:

import qualified Data.Set as Set

data Nat = Zero | Succ Nat deriving (Eq, Show, Ord)

instance Enum Nat where
  pred (Succ x)     = x
  succ x            = Succ x
  toEnum 0          = Zero
  toEnum x          = Succ (toEnum (x-1))
  fromEnum Zero     = 0
  fromEnum (Succ x) = 1 + (fromEnum x)

nats :: [Nat]
nats = [Zero ..]

natSet :: Set.Set Nat
natSet = Set.fromList nats
Run Code Online (Sandbox Code Playgroud)

为什么:

  • elem (toEnum 100) nats == True

但

  • Set.member (toEnum 100) natSet …

haskell set

11
推荐指数
2
解决办法
1532
查看次数

标签 统计

haskell ×1

set ×1