Current limitations and workarounds

From Dyna
Revision as of 05:18, 30 December 2008 by (Talk)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This website ( documents the evolving design of the Dyna language. Some features documented on the site are designed but not yet implemented. We have tried to indicate in the wiki when this is the case. (If we didn't, please edit us.)

This section reviews the most significant limitations of the current implementation, especially limitations that prevent some of the examples from running as they stand. We also explain how to work around some of these limitations.

Please let us know which of these features are most urgent for your work.

Homogeneous programs

At present, Dyna programs must have a restricted homogeneous form:

  1. All items must have the same type and the same default value. It is not yet possible to mix int and bool items in the same program, as in this factorial example.
  2. All accumulation operators must be identical. It is not yet possible to mix =, log =, max=, min=, etc. in the same program, as needed for game tree analysis.
  3. All computed expressions must use the same operator. It is not yet possible to have both a*b and b c in the same program, or to write a*b c, as in these smoothing formulas.
  4. The (single) operator that appears in expressions must distribute over the (single) accumulation operator.

Allowed semirings

In particular, you are limited to the following types of programs, which correspond to different semirings. (Feel free to ask us to extend this list. It's easy for us to do so as long as the distributive property holds.)

:- item(item, bool, false).
a |= b
Personal tools