通常,使用和类型非常简单,在许多情况下效果很好
data LifeForm = Grass | Sheep | Wolf
但当我想打开我的" LifeForm"关于我的问题,我属于异类集合,Data.Dynamic
,Data.Typeable
等等(here a silly example using a simple String to discover the "type" at runtime)。
我喜欢延长我的生活方式" LifeForm"以一种新的生命形式和#34;可以通过他们自己的和新属性(类)与他们互动并限制。
通常在运行时下传是许多语言中最简单的方法。
我正在寻找有用的策略,当他们的元素可能知道或不知道其他人的可选属性时,我可以用它来扩展(不改变"核心")容器(例如{{1} },class Vegetable a
,...)。
你是如何处理的?
Data.MultiConstrainedDynamic和其他人是最好的方式吗?
最好尽量避免这种可扩展性吗?
THK!
更新以澄清"根本不清楚您希望用它做什么。 "
一旦我的" lifeforms核心" :
class Runner a
的" wind" ,现在任何生命形式都会受到风的影响(对于每个"世界步骤" "风生活形式" 将检查所有class AffectedByTheWind a
)。AffectedByTheWind
,class Fly a
,class IsMeat a
,...以及其他"生命形式& #34; 可以与之互动。class Might a
)。所有这些都可以使用求和类型或固定类型类层次结构来实现,但在"表达式问题" 意义上是不可扩展的。