我正在尝试使用嵌套列表表示数学表达式,然后使用模式使用数学标识来转换它们。例如,我希望能够做这样的事情(伪代码):
以x(y+z)
['mul', 'x', ['add', 'y', 'z']]
开头
以
的形式申请身份a(b+c) = ab+ac
['mul', '*1', ['add', '*2', '*3']] -> ['add', ['mul', '*1', '*2'],
['mul', '*1', '*3']]
以xy+xz
['add', ['mul', 'x', 'y'], ['mul', 'x', 'z']]
在这个例子中,这很容易,但是我希望能够将任意复杂的模式应用于嵌套列表,并允许'* n'表示的占位符能够成为任意复杂的嵌套列表。< / p>
有没有人知道一种支持这种本地化的编程语言。我选择的武器是Groovy,我已经想出如何在Groovy中做到这一点,但我还没有广泛测试它,我想知道是否有任何其他语言内置支持这样的东西。我听说Scala有一个特别强大的集合库,所以它可能会做这样的事情吗? JVM语言是我的首选。