小编Vit*_*vic的帖子

Clojure评估宏

我在Clojure中构建DSL时遇到问题.这是我与其他一切事物隔绝的具体问题.

假设我们有一个简单的宏:

user> (defmacro m1 [x] `'~x)
#'user/m1 
Run Code Online (Sandbox Code Playgroud)

它只返回文字提供的用户>(m1 toUpperCase)toUpperCase

如果我们为对象调用java方法,一切都按预期工作

user> (. "a" toUpperCase)
"A"
Run Code Online (Sandbox Code Playgroud)

但是如果我们将方法名称替换为返回methodname的宏调用

user> (. "a" (m1 toUpperCase))

; Evaluation aborted.
Unable to resolve symbol: toUpperCase in this context
Run Code Online (Sandbox Code Playgroud)

我想使用一些具有流畅接口的java库,如a().b().c().这映射到Clojure:

(.. obj method1 method2 method3....etc)
Run Code Online (Sandbox Code Playgroud)

我想创建替换此链的某些部分的宏,所以我的代码应该是这样的:

(.. obj method1 macro1)
Run Code Online (Sandbox Code Playgroud)

那应该扩展到

(.. obj method1 method2 method3)
Run Code Online (Sandbox Code Playgroud)

definline也没有帮助.我也试过了

macros clojure

7
推荐指数
1
解决办法
382
查看次数

如何在emacs中分离alt键和meta键

我想将PgUp键盘上的一个键映射到Alt修饰符以在 Emacs 中生成A-键序列,以便我可以将其映射到一组全新的键绑定。

我正在查看我的键盘映射,目前我的左键Alt同时用作Meta_LAlt_L修饰符。这是相关输出xmodmap -pke

keycode  64 = Alt_L Meta_L Alt_L Meta_L Alt_L Meta_L Alt_L Meta_L
Run Code Online (Sandbox Code Playgroud)

我不知道如何告诉 emacs 将AltMeta完全分开,

我看过了,x-alt-keysym它是nil

Which keys Emacs uses for the alt modifier.
This should be one of the symbols `alt', `hyper', `meta', `super'.
For example, `alt' means use the Alt_L and Alt_R keysyms.  The default
is nil, which is the same as `alt'. …
Run Code Online (Sandbox Code Playgroud)

emacs

5
推荐指数
1
解决办法
1355
查看次数

标签 统计

clojure ×1

emacs ×1

macros ×1