Macros SweetJS:为特定库编写宏

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,

我目前正在做一个关于为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];
我的问题是我不知道如何引用拉姆达


有没有人尝试为特定库编写宏时遇到了这个问题?

目前,编写宏的方法有点不成熟。在下一个版本中,当我们获得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回购:)我一直说它很快就会发布,有一次我是对的:)