小编his*_*oka的帖子

从树中提取特定类型

我已经构建了一棵树,我想从中收集所有Leaf类型:

Branch [] (Branch [0] (Leaf [0,1]) (Branch [0] (Leaf [0,2]) (Branch
[0] (Leaf [0,3]) (Leaf [0])))) (Branch [] (Branch [1] (Leaf [1,2])
(Branch [1] (Leaf [1,3]) (Leaf [1]))) (Branch [] (Branch [2] (Leaf
[2,3]) (Leaf [2])) (Branch [] (Leaf [3]) (Leaf []))))
Run Code Online (Sandbox Code Playgroud)

:t在上述变量的GHCI()中得到的类型是:

Tree [Int]
Run Code Online (Sandbox Code Playgroud)

数据结构如下:

data Tree a = Empty | Leaf a | Branch a (Tree a) (Tree a)
Run Code Online (Sandbox Code Playgroud)

我试图孤立ONLY叶子,这样我会获得:

[ [0,1], [0,2] .. [3], [] ]
Run Code Online (Sandbox Code Playgroud)

我一直试图filter在结果上运行,但这不起作用.我已经尝试使用该函数Data.Foldable.toList,但它也会拉入所有分支并导致大量列表中包含多个重复项,并且无法判断它是分支还是叶子.

tree haskell

6
推荐指数
1
解决办法
114
查看次数

UML域模型:如何区分属性和类?

我目前正在制作战斗游戏的领域模型,我很难确定某些元素应该是他们自己的类还是某些类的属性.例如,我使用类别列表来确定以下想法/对象:战斗机,等级,武器,护甲,属性,技能,竞技场,游戏模式,游戏日志,对手.

例如,我无法判断水平,武器,护甲,属性,技能是否应简单地说明为战斗机的属性,还是应将它们划分为自己的对象.我不知道对手是否应该是一个独特的阶级,因为它最终是一个战斗机对象与另一个战斗机的"攻击/防御"关联.

如何确定类别列表中每个元素的正确选择?这些可能是主观的吗?

仅供参考,我使用Craig Larman的"应用UML和模式"第3版作为信息源.

uml domain-model

3
推荐指数
1
解决办法
94
查看次数

Haskell - 函数签名

我在理解实施某些功能的问题时遇到了困难.我有一个通用数据类型定义如下:

import qualified Data.Map.Strict as Map
data Stuff x = Stuff (Map.Map x [x])
Run Code Online (Sandbox Code Playgroud)

当我尝试实现这样的功能时:

foo :: Ord x => x -> x -> Stuff x -> Stuff x
foo a b (Stuff c) = Stuff (Map.insert (a b c))
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Couldn't match expected type ‘Map.Map x [x]’
            with actual type ‘a0 -> Map.Map k0 a0 -> Map.Map k0 a0’
Run Code Online (Sandbox Code Playgroud)

但是,当我验证Haskell文档中的签名时:

insert :: Ord k => k - > a - > Map ka - > Map ka

如果它返回"Map k …

haskell

1
推荐指数
1
解决办法
127
查看次数

标签 统计

haskell ×2

domain-model ×1

tree ×1

uml ×1