在向下转换时处理问题的策略看起来最合适

时间:2016-11-08 17:19:46

标签: haskell dynamic

通常,使用和类型非常简单,在许多情况下效果很好

data LifeForm = Grass | Sheep | Wolf

但当我想打开我的" LifeForm"关于我的问题,我属于异类集合,Data.DynamicData.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核心"

  1. 我喜欢添加定义新class Runner a" wind" ,现在任何生命形式都会受到风的影响(对于每个"世界步骤" "风生活形式" 将检查所有class AffectedByTheWind a)。
  2. 我喜欢添加 Dodo 鸟类实例AffectedByTheWindclass Fly aclass IsMeat a,...以及其他"生命形式& #34; 可以与之互动。
  3. 我喜欢添加一个"观察者生活形式" (一个"精神形式" )报告可以运行多少生命形式(实例class Might a)。
  4. 我喜欢添加一个"行为生命形式" (一个"元素形式" )来检查{{1}形式存在并降低其生命能量。
  5. ...
  6. 所有这些都可以使用求和类型或固定类型类层次结构来实现,但在"表达式问题" 意义上是不可扩展的。

0 个答案:

没有答案