Macros SweetJS:为特定库编写宏
我目前正在做一个关于为Ramda编写宏的小项目。以下是一个例子:Macros SweetJS:为特定库编写宏,macros,sweet.js,ramda.js,Macros,Sweet.js,Ramda.js,我目前正在做一个关于为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,
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];
我的问题是我不知道如何引用拉姆达
有没有人尝试为特定库编写宏时遇到了这个问题?目前,编写宏的方法有点不成熟。在下一个版本中,当我们获得ES6模块时,这实际上会为您自动处理,但在此之前,最好的选择是有一个初始化宏(这是什么和做什么)。这是通过在所有宏的作用域中有一个共享变量,然后让用户首先调用执行必要的
要求的导入
宏来实现的:
var r_lib;
macro import {
rule { $name from $path } => {
r_lib = require($path);
}
}
let map = macro {
rule { $f $l } => { r_lib.map($f, $l) }
}
import R from "ramda"
map log [1,2,3]
谢谢,效果很好!你知道下一个版本的计划是什么时候吗?无论如何,我都应该关注github回购:)我一直说它很快就会发布,有一次我是对的:)