我目前正在开展一个小项目,其中包括为Ramda编写宏。这是一个例子:
let map = macro {
rule { $f $array } => { R.map($f, $array) }
rule { $f } => { R.map($f) }
}
我尝试将这个简单的代码示例编译为开头:
var R = require('ramda');
function log (value) {
console.log(value);
}
map log [1, 2, 3];
由于卫生,编译后的代码如下所示:
var R$759 = require('ramda');
function log$761(value$762) {
console.log(value$762);
}
R.map(log$761)[1, 2, 3];
我的问题是我不知道如何引用ramda。
是否有人尝试为特定库编写宏并遇到此问题?
答案 0 :(得分:2)
目前,做到这一点的方法有点笨拙。在下一个版本中,当我们获得ES6模块时,实际上会自动为您处理,但在此之前,最好的选择是使用初始化宏(这是ki和contracts.js所做的事情)。这可以通过在所有宏的范围内使用共享变量,然后让用户首先调用执行必要import
的{{1}}宏来实现:
require