Menu

Home

OmniMark Code

Markup Referents

Referents have been one of distinguishing features of OmniMark from its very beginnings.

Unfortunately, this feature of OmniMark did not age well. For one thing, referents cannot cross the coroutine boundaries until they are resolved. In other words, any coroutine in a stream-processing pipeline that uses referents will have to buffer its entire output while its nested-referents scope is open.

Another, even bigger constraint on referents is the fact that the only data type which a referent can contain, and the only type that can be written into a sink with referents-allowed, is a string. That means that no markup source function can output referents. And that's a shame, because markup streams bring huge improvements in developer productivity.

Must we really choose between using referents and using markup streams? Only if we're talking about the traditional referents built into the language. However, the general-purpose side of OmniMark has now grown enough to allow us to implement the referent-resolving mechanism within the language.

Project Admins:


Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.