【发布时间】:2017-07-18 08:28:36
【问题描述】:
Happy 生成带有签名的解析器 :: [Token] -> a
我想生成一个参数化解析器,即需要一个函数作为参数来传递解析器的函数。
所以我想要签名:::(x->y) -> [Token] -> a。
但是,我也可以使用签名 ::[Token] -> (x->y) -> a。
功能固定后,我可以解决 通过导入和分配函数。
import Functions (fixedFunction)
Root : Production Rule
{ $$.argument = fixedFunction
}
当参数是Show的实例时,我可以如下解决
Alex:
data Token = ...
| Carg ArgType
Happy:
%token
...
Argument { Carg $$ }
Root : Argument Production Rule
{ $$.argument = $1
}
参见例如我的项目 TorXakis 了解更多详细信息,特别是文件夹 https://github.com/TorXakis/TorXakis/tree/develop/sys/front/src
但是,我无法传递作为函数的变量参数,因为函数不是从 Show 派生的! 由于 Haskell 是一种函数式语言,我强烈怀疑我遗漏了一些微不足道的东西,但我没有看到它...... 任何人都可以提供一个将函数传递给快乐生成的解析器的例子吗? 提前致谢!
皮埃尔
【问题讨论】:
标签: function haskell functional-programming happy