首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Haskell Math.Combinatorics.Species枚举分区

使用Haskell Math.Combinatorics.Species枚举分区
EN

Stack Overflow用户
提问于 2018-03-04 09:10:04
回答 1查看 152关注 0票数 0

下面的交互展示了如何使用Haskell可用的Math.Combinatorics.Species库的最新版本(0.4版)枚举集合的子集。我想知道如何使用相同的库来枚举一个集合的分区,但是我不能理解和修复我得到的类型错误。更具体地说,我不理解分区的structureType,":Set Set“是什么意思?

代码语言:javascript
复制
vamsi@vamsi-laptop:~/learn/project_euler$ ghci -XNoImplicitPrelude
GHCi, version 8.0.2: http://www.haskell.org/ghc/  :? for help
> import qualified Math.Combinatorics.Species as S
S> import qualified Data.Int as I
S I> S.structureType S.subset
"Set"
S I> S.enumerate S.subset [1,2,3] :: [S.Set I.Int]
[{},{3},{2},{2,3},{1},{1,3},{1,2},{1,2,3}]
S I> S.structureType S.partition
": Set Set"
S I> S.enumerate S.partition [1,2,3] :: [S.Set (S.Set I.Int)]

<interactive>:6:26: error:
    • No instance for (GHC.Num.Num (S.Set I.Int))
      arising from the literal ‘1’
    • In the expression: 1
      In the second argument of ‘S.enumerate’, namely ‘[1, 2, 3]’
      In the expression:
      S.enumerate S.partition [1, 2, 3] :: [S.Set (S.Set I.Int)]
S I> S.enumerate S.partition [1,2,3] :: [(S.Set I.Int)]
[{*** Exception: Structure type mismatch.
Expected: Set Int
Inferred: : Set Set Int
CallStack (from HasCallStack):
  error, called at ./Math/Combinatorics/Species/Enumerate.hs:176:33 in 
  species-0.4-DcNHk9r6nze3hHzRydgNb3:Math.Combinatorics.Species.Enumerate
EN

回答 1

Stack Overflow用户

发布于 2018-03-04 21:30:37

这似乎是structureType使用的漂亮打印机中的一个错误。我已经报告了here的问题;同时,当您看到:.:作为类型构造函数时,您可能应该使用:。所以,就像这样:

代码语言:javascript
复制
S I> S.enumerate S.partition [1,2,3] :: [(S.Set S.:.: S.Set) I.Int]
[{{1,2,3}},{{2,3},{1}},{{2},{1,3}},{{3},{1,2}},{{3},{2},{1}}]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49090939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档