我在写一个自定义语言,它具有一些功能元素。当我陷入某个地方时,我通常会检查Haskell是如何做到的。这一次,这个问题有点复杂,让我想起一个给Haskell的例子。Haskell如何知道哪个函数可以先运行?
这是怎么回事。
说我们有在Haskell以下行
a . b
。显然,我们正在编写两个函数a和b。但是,如果函数又将另外两个函数作为参数呢?什么阻止了它的运行。和b?您可以将它括在括号中,但这应该没有什么区别,因为表达式仍然计算为函数,前缀一,前缀函数优先于中缀函数。
如果你
(+) 2 3 * 5
例如,它会输出25,而不是17
基本上要问什么,我是,当你想要一个中缀功能操作不哈斯克尔用什么机制在前面的前缀函数之前。
所以。如果“a”是一个以两个函数为参数的函数。你如何去解释
a . b
为“适用。和B功能的” 停止Haskell和它解释为“组合功能a和b”。
所以这基本上是一个关于这种表达式的解析的问题? – leftaroundabout 2013-02-08 12:00:41
我总是可以想到一些解决这些问题的解决方案,但我真的很想知道它是如何在Haskell中实现的。也许没有实现,它是如何工作的。 – 2013-02-08 12:02:36
我真的不明白这个问题吗? – Cubic 2013-02-08 12:10:43