1

概括

Clojure 中是否有类似http://en.wikipedia.org/wiki/E_programming_language作为 DSL 的东西?

背景

我知道:

语境

我是能力系统和信息流的忠实粉丝。我想知道是否有人为这两种技术开发了 Clojure DSL。以下将是理想的:

  • 所有对象都有一些标签(比如在它的元表中),列出了谁对该对象具有读取权限

  • 当我想以用户“foo”的身份运行查询时,我设置了一些上下文变量,说“现在,只使用 foo 的功能”——然后函数,当它试图访问对象时,要么获取对象(如果 foo 有访问它)或 nil (如果 foo 无权访问它)。目前,泄露有关物体存在的信息对我来说并不是什么大问题。

问题

所以问题是——作为 Clojure DSL,这很容易做到吗?每个对象都有一些功能标签,我们可以在某些标签下执行一些功能/代码,运行时系统确保没有人可以访问他们不应该访问的东西。

谢谢!

4

1 回答 1

2

您可以使用元数据和先决条件执行此操作,然后创建宏以向其添加 DSL/语法,但我建议跳过宏并仅使用先决条件和元数据。

  • 每个对象都有一段元数据,其中列出了它的功能。
  • 每个函数都有一个检查元数据的前提条件。
于 2012-06-02T01:19:50.657 回答