我正在Clojure学习宏,想写“cond”宏
我无法将参数分解为(条件)(参数)并编写递归宏
请帮帮我。我写这篇文章是为了说明这个过程。这段代码有很多bug,但是这个过程会让你尽快找到有趣的部分:)
写出对宏的调用以及希望该调用转换为什么(此步骤不是可选的;)
为最简单的情况编写模板,然后将其馈送到(macroexpand-1…)并旋转直到匹配
(defmacro my-cond [test result] `(if ~test ~result nil))
(macroexpand-1 '(
我在翁布拉科论坛上发表了这篇文章,但毫无效果,我想知道整个社区是否能够提供一些建议。我们正在将网站从4.0.3升级到4.6。但我无法部署它,因为宏未呈现-错误状态约为30次:
UmbracoPage Aliases must be unique, and element with alias 'data' has already been loaded!
还说,
System.Web.HttpException: Multiple controls with the same ID 'ctl0
宏defpage给我带来了一点麻烦。我正在尝试构造一个类似以下内容的调用:
(defpage [:post "some/url"] [data]
;; some stuff...
)
但是,我不想使用关键字:post,而是想使用一个变量,如下所示:
(def my-method :post)
(defpage [my-method "some/url"] [data]
;; some stuff...
)
问题是,当宏展开时,它希望解析compojure.core命名空间中的
我知道在LISP宏参数中进行解构是一件很好的事情;我想知道这是否必要。例如,
(defmacro m1 (a) (car a))
及
似乎是(大致)等价的-除了检查参数的正确形式
我的猜测是,解构使代码更容易编写/理解,但是任何使用它的代码都可能被翻译成不使用它的代码。我是对的还是这是一个愚蠢的初学者的错误?这不是必要的。可以让Lisp系统对宏调用进行解构,也可以在宏中编写自己的代码
如果您要编写自己的分解代码,则通常会将其与&rest或&body参数列表结合使用。一个常见的原因是宏lambd
2012-02-04由“同源性”一词赞助
背景:我将要选择购买哪本关于Clojure的书——或者(四月底推出)“Clojure编程”(你可以通过,一半的页面是可见的)。令我震惊的是,在这两本书中,这一特性——同象性——得到了如此多的强调
因为Clojure的根是基于Lisp的,所以我提到的这真的很重要。嗯,我可以看到宏的详细解释,但我没有抓住提到的重点。现在比较一下(引用“Clojure in Action”)
这种同象性也是Clojure的宏观系统得以实现的原因
如果没有它,宏几乎是不可能的。
我已经在上问过这个问题,但是我想通过在这里发布相同的问题来增加我得到解决方案的机会
我遇到的问题是,在Razor宏中,我无法获取访问站点的当前成员。我尝试过以下方法:
正在调用Member.GetCurrentMember(),但返回NULL
正在调用Membership.GetUser(),但返回NULL
调用UmbracoEnsuredPage.CurrentUser返回NULL
有没有其他方法可以让当前的成员看到上述方法在我的情况下如何不起作用
var m = Membership.G
我试图通过为现有变量指定格式来创建一个新变量。我在宏中执行此操作。我得到了以下错误:“:需要一个格式名。”有没有关于如何解决的想法?谢谢
/* macro to loop thru a list of vars and execute a code block on each. This is working fine. */
%macro iterlist
(
code =
,list =
)
;
%*** ASSIGN EACH ITEM IN THE
我试图找到网上描述的类似错误,但没有找到任何东西。希望有人能帮忙
我在gnuplot 4.4p3中使用了类似于此示例的代码:
set macros
col_TIME = '1'
col_meas = '2'
range = 'using ($@col_TIME/3600):@col_meas'
plot "file.txt" @range
但是对于gnuplot4.6p3,它在执行最后一行时会引发错误。它正确地替代了
plot "file.txt" using ($@col_TIME/3600
我有一个宏DDLogDebug(…),我想执行以下操作
#define _DDLogDebug(arg...) DDLogDebug(args)
#undef DDLogDebug
#define DDLogDebug(args...) doSomething(); _DDLogDebug(arg...)
但它不起作用。我需要一个命令来“存储”宏DDLogDebug的内容,而不是#define#u DDLogDebug(arg…)DDLogDebug(args)
这样的事情存在吗
如果要修改
当我试图在代码中定义宏时,编译器会这样说:
refix/mod.rs:12:1: 12:12 error: macro definitions are not stable enough for use and are subject to change
refix/mod.rs:12 macro_rules! re_fix(
^~~~~~~~~~~
refix/mod.rs:12:1: 12:12 note: add #[feature(macro_rules)
我刚刚意识到定义宏的两种方法都是有效的。这两者之间有什么区别吗?实际上,没有区别,你可以使用这两者中的任何一个。但是作为一个好的编程实践,您应该使用第一个,因为它有助于确定宏的结束位置
如果您使用的是第一个,请记住在用于宏的名称后面加上相同的名称,否则SAS将发出警告
不,绝对没有区别。所有这些在技术上都是一样的
%macro A1(input);
[balala]
%mend A1;
%macro A1(input);
[balala]
%mend;
(二)
%mend;
%mend
我有一个宏,它接受函数声明列表,并将它们转换为不同的声明
macro_rules! re_export {
($(pub fn $i:ident($($arg:ident: $argty:ty)*) -> $ret:ty;)*) => ($(
extern {
pub fn $i($($arg: $argty),*) -> $ret;
}
)*);
($(pub fn $i:ident($($arg
我正试图用以下代码定义两个宏,但由于**(CompileError)iex:12:undefined function name/0而失败。
功能参数name不能在defmacro的do块中取消引用
这是什么原因?
有什么办法解决这个问题吗
(Elixir版本为1.2.5)
基本上需要取消引用两次,因为动态宏生成已经是一个隐式宏。您可以在defmacro的顶部添加以下行:
name = unquote(name)
name = unquote(name)
我正在编写一个用于解析OVPN配置文件的小库。OVPN配置文件具有此格式
command arg1 arg2
othercommand arg1 arg2
有一组固定的命令,其中一些命令有可选参数。我想将解析后的命令表示为枚举。因此,上述情况可能最终表现为:
enum ConfigDirective{
Command{arg1: String},
OtherCommand{arg1: String, optinal_arg1: Option<String>},
}
我想在ISPF编辑中添加一些快捷方式
例如,我想键入T表示“TOP”,键入B表示“BOT”。我该怎么做?我试图进去
define t alias top
在命令行中,但它不起作用:如果使用快捷方式,我会出现“command TOP NOT FOUND”
我怎样才能做到这一点?以及如何在每次打开“编辑”时使用此快捷方式?顶部和底部是ISPF命令表中的命令。它们不是编辑命令。它们是UP MAX和DOWN MAX的别名。ISPF命令的长度必须至少为2字节,因此不能在命令表中使用1字节字符为UP MA
我正在寻找一种在工具栏中添加宏作为图标的方法
似乎可以将键绑定到宏、使用自定义工具栏以及使用自定义工具栏。但这些选项都没有提供将录制的宏作为图标添加到记事本++工具栏的选项
有什么建议吗?正如您所说,这可以通过CustomizeToolbar插件实现。只需遵循以下步骤:
安装CustomizeToolbar插件(您可以在Sourceforge上找到它)
重新启动记事本++
启用自定义按钮检查插件/自定义工具栏/自定义按钮:
记事本++将要求您重新启动:
打开%APPDATA%\Notepad
我在使用以下%macro进行回归时遇到问题
基本上,我希望它在I=j,I=1到12,j=1到12时运行
%macro reg(num=);
%do i=1 %to #
%do j=1 %to #
proc reg data=ccy.eur; *Specify Currency Data Set Here;
model Ft_leadSt&i = Ft_St&j;
where &i=&j;
我的数据集如下所示:
AsAtDate ReleaseDate ID Var1 Var2 ... Var5
200701 200601 1 x .
200702 200601 1 . a
200703 200601 1 . .
200701 200702 2 . b
200702 200702 2 y b
200703 200702
我刚刚注意到Doxygen为C预处理器宏生成文档的方式有些有趣。在(//、/!和/***/中创建块注释的三种样式中,只有前两种样式(//、/!)将在文件的宏列表中显示简要说明
我的问题是:这是设计的吗?我有一个配置选项来控制这个吗?我找不到任何信息,JavaDoc风格应该和QT和C++风格不同。
我尝试使用MULTILINE\u CPP\u IS\u-BRIEFconfig选项,但没有任何效果
测试c
/**
* @file test.c
* @brief A test
*/
#incl
如何实现,或者是否存在线程优先(->)和线程最后(->)的实现
例如:
# equivalent of sum(1, 2)
@thread-first 1 sum(2)
# equivalent of any(map(isequal(1), [1,2,3]))
@thread-last [1,2,3] map(isequal(1)) any
Julia有管道,但通常|>运算符只允许一个参数函数。在Clojure中,thread first和thread last参数将参数插入函数中多个参数的
我正在使用。我不是专家,但我喜欢认为我理解得足够好,可以混日子。但是,我最近在defmacro中遇到了一个奇怪的问题
为什么下面的代码不编译,我如何更改它使其编译
(let ((a nil))
(defmacro testmacro ())
(testmacro))
错误是:
Unhandled UNDEFINED-FUNCTION in thread #<SB-THREAD:THREAD "main thread" RUNNING
我试图构造一个函数模板,我可以在具有包特定参数的其他包中使用它。我试图实现这一目标的要点如下:
;;; FSM
(in-package #:fsm)
(defmacro %cas (flag old new)
#+sbcl `(sb-ext:compare-and-swap ,flag ,old ,new)
#+ecl `(mp:compare-and-swap ,flag ,old ,new)
)
(defmacro control! (fsm task flag)
`(
有点背景,我是一个完全的口齿不清的人,几周前才开始,但我已经在其他语言中发展了很多年。逻辑没问题,lisp,有问题
我正在尝试编写一个宏,它将为我定义两个clsql类,以解决库中的一个问题。我希望将类命名为x和'x-insert``,因此在宏中我希望宏计算x-insert的符号名,但我很难做到这一点。我的尝试在下面,但我在两件事上被难住了
如何让它创建类名。如果我删除,class-insert中的空格,它将不会求值,这是我理解的,因此我认为我缺少一些直接的方法来告诉它忽略空格,并将名称创建为单个
标签: Macros
bitwise-operatorsglibcbitnetbsd
我正在寻找通用位宏(例如提取或设置多个位),这样我就不必重新发明它们。在NetBSD上,我发现在中至少有\uuu位和\uu位,但glibc似乎没有这样的宏(尽管GCC提供了一些更复杂的内置位函数)。我还没有研究过其他平台。有人知道其他预定义的位宏或函数吗?我认为MS上没有(除了普通的HIWORD/LOWORD等),但另一方面,为什么不使用位字段呢?如果您必须处理具有预定义布局的位,也就是说
我正在尝试创建一个小Clojure宏,它defs一个带有类型提示的字符串:
(defmacro def-string [name value]
`(def ^String ~name ~value))
(def-string db-host-option "db-host")
当Imacroexpandit时,类型提示丢失:
(macroexpand '(def-string db-host-option "db-host"))
;=> (def db-host-option "d
所以这是一个语言不可知的问题,我真的不知道用什么样的标签来排序
基本上,我有一个程序,是自动推广到一个flex应用程序。flex应用程序基本上是一个框架,包含加载在主内容区域的选项。您可以单击的数量取决于各种因素,根据这些因素,可以在1-13000之间变化
我正在编写一个宏,使用AHK对所有这些项执行操作。但是,如果不知道清单中的确切项目数量,我就无法对此做很多事情。更糟糕的是,我完全无法在其他任何地方找到任何关于此的文档
示例如下:
我将把它归档在宏下,如果有人能帮我处理其他标记,我会很高兴
我有一个宏(来自),它应该允许使用中缀运算符:
(defmacro infix-better [form]
`(~(second form)
(first form)
(last form) ))
它执行它应该执行的操作,但并不完全扩展到相同的表达式。例如:
user=> (= '(* 10 2) (macroexpand '(infix-better (10 * 2))))
false
user=> '(* 10 2)
我创建此宏是为了用当前文档中的另一个单词替换特定单词,但理想情况下,我希望用剪贴板内容替换它。我目前的代码如下:
// Macro recorded on: Wed Jul 11 2012 01:29:42 GMT+0530 (India Standard Time)
komodo.assertMacroVersion(3);
if (komodo.view) { komodo.view.setFocus(); }
ko.find.replaceAllInMacro(window, 0, 'It
在OpenGL ES 2中,可以将字符串数组设置为着色器源
void ShaderSource( uint shader, sizei count, const char **string, const int *length );
可用于将宏“注入”到着色器源中。WebGL中的相应函数只接受一个字符串
void shaderSource(WebGLShader shader, DOMString source)
是否只有使用宏才能手动将它们插入源字符串?我不确定您所说的插入宏是什么意思
c
我正在努力在富编辑器中嵌入内容,但不确定从哪里开始。
Iv'e有一组节点,其中包含我希望嵌入到其他节点中的数据
现在我要做的是制作一个宏,在这个宏中我可以选择这些节点中的一个,并在富编辑器中插入其中的一些数据。对于初学者来说,它可能只是通过节点ID
或者只是用宏呈现用户控件?如果可能的话
我真的没有在翁布拉科用过那么多宏,所以我有点迷路了,这容易实现吗
有什么建议吗,或者是一个简单的例子
更新:
只是为了弄清楚我在尝试什么。。。
我有很多节点,我们称它们为“嵌入式内容”
然后在我的内容页面上,
在我们的应用程序中,我们使用JIRA作为缺陷跟踪工具。因此,我们希望从excel中读取少量输入,并将其写入特定字段和JIRA中的下拉列表
例如:
优先级(JIRA中的下拉列表)应采用excel中输入的值(2高)并在JIRA中输入值
类似地,URL是JIRA中的一个字段,我们应该在excel中输入,同样应该在JIRA中输入。
是否有任何示例宏可供使用?JIRA提供REST API,因此您可以用任何语言编写一个简单的程序来解析Excel文件,并在JIRA实例中创建一个票证,并用Excel中的值填充票
我想在AIX中获得csv文件的文件大小,并使用下面的X和Call系统命令来完成。问题是我无法在宏变量中获得“文件大小”,我将在程序中稍后使用该变量
data _null_;
call system('du -g p_bhj_c_hh100uk01po1.csv');
call symput('space','X du -g p_bhj_c_hh100uk01po1.csv');
%put &space;
run;
WARNING: Apparent symb
所以我尝试创建新的列,mon&cur\u buy和times&cur\u buy,它们分别保存work.t表中设置为money和times的值
分配新变量值的标准是&cur_buy宏变量的名称是否与work.t表中当前行的BuyName值匹配
引用的&buyer宏变量只是一个名称列表,名称之间用逗号分隔
我得到的错误是,新变量mon&cur\u buy和times&cur\u buy无效
名称解析正确,但从未写入新数据集decvars
%let names = %quote(&buyer
据我所知,基于模式和模板的Scheme宏系统首先通过模式匹配宏调用,在成功的情况下获得替换,将生成的替换应用于相应的模板以构建(可能)部分扩展的表达式,然后继续扩展生成的表达式。如果我所描述的是真的(请纠正我,否则),那么在我看来,这种构建和再次扩展模型是没有效率的。为什么扩展需要这样做?是否可以通过一次彻底地运行模板来完成扩展?宏系统的语义是按照您描述的方式指定的。然而,实现可以自由地以任何方式实现该规范;特别是,它们可以提前“内联”宏扩展,以加快宏扩展过程
我不知道有任何Scheme实现可以
数量…名称…成本…ab…ac…ad…ae
1………ac………40
2………ab………10
3………ae………30
公元前4年
嗨,我是sas宏的新手,我需要帮助将成本值分配到如下相关列
你能帮帮我吗
数量…名称…成本…ab…ac…ad…ae
1………ac………40………40
2………ab………10………10
3………ae………30………30
4……..ad……..20……..20拆下ab、ac、ad、ae。。。初始数据集中的列。
然后看看proc transpose,它正是您所需要的:快速搜索S
我有一个电子邮件图表,我试图从图表中获取电子邮件,以便向特定的人发送电子邮件。到目前为止,这是我的宏中的内容,但它似乎不起作用:
set email = ActiveDocument.GetSheetObject("CH63").GetCell(13,2)
ActiveDocument.Variables("TOEmail").SetContent email.text, true
ToAdd = TOEmail
sendMail Message , "RoadRunner
我有两个不同的Clojure宏,但根据操作(~@和~),我需要引用输入或不引用输入
(defmacro make2 [t]
`(list 1 ~@t))
(defmacro make3 [t]
`(list 1 ~t))
(make2 (1 2 3)) -> (1 1 2 3)
(make3 '(1 2 3)) -> (1 (1 2 3))
为什么会这样?我可以猜测,对于宏,参数不会被计算(这就是make2不会导致错误的原因)。然而,在得到这些论点之后,我不确定处理
我是Lisp新手,我正在阅读Doug Hoyte的《让Lambda过去》,他在第3章介绍了Paul Graham的nif宏。我在玩这个,制作了两个宏:
(defmacro niffy (expr pos zero neg)
`(cond ((plusp ,expr) ,pos)
((zerop ,expr) ,zero)
(t ,neg)))
(defmacro niffy2 (expr pos zero neg)
`(let ((x ,expr))
图书馆办公基地4.3.3.2
按名称打开表单页面,然后关闭当前页面表单,如下所示:
oForm = ThisDatabaseDocument.FormDocuments.getByName("SecondForm")
oForm.Open
oFormC = ThisDatabaseDocument.FormDocuments.getByName("CurrentForm")
oFormC.Close
但有没有一种方法可以不用手写他的名字来结束ORMC
正在尝试:
oFormC
是否可以使用lisp的宏进行字符串插值
例如,我可以制作如下宏:
(defmacro test (a) `",a")
(defvar *arguments-rt* (copy-readtable ()))
(defun timestring-reader (stream char &optional count)
(declare (ignore char count))
(with-output-to-string (s)
(loop repeat 4 do (wr
我试图写一个宏,使我能够转换
(a,b,c,d)到(a,a+b,a+b+c,a+b+c+d),等等。以下是我到目前为止得到的:
macro_rules! pascal_next {
($x: expr) => ($x);
($x: expr, $y: expr) => (
($x, $x + $y)
);
($x: expr, $y: expr, $($rest: expr),+) => (
($x, pascal
在中,Paul Graham写道,“不幸的是,我们不能用define modify macro定义正确的\u f,因为要应用于广义变量的运算符是作为参数给出的。”
但是像这样的东西有什么问题吗
(define-modify-macro _f (op operand)
(lambda (x op operand)
(funcall op x operand)))
(let ((lst '(1 2 3)))
(_f (second lst) #'* 6)
lst)
=>
如何实现这样的目标
(defmacro mood (x)
(if (equal (symbol-name x) "t")
`(defun happy ()
(message "Happy"))
`(defun sad ()
(message "Sad")))
)
我的目标是根据参数创建不同的函数。
这样做有什么问题吗?编辑2:你是对的——对于在展开时计算的代码完全依赖于(未计算的)宏参数的值的情况,我认为基于这些参数有条件地生成宏的返
我想生成一个模块,它使用一个宏创建的函数,所有功能都按预期工作,但除了unquote(块)上的上下文之外,似乎超出预期。
测试代码如下所示
defmodule A do
defmacro wrap(head,opts \\[],do: block) do
{name,args} = case head do
name when is_atom(name) ->
{name,[]}
h ->
我正试图找到一种方法,使用tmux跳转到iTerm中的上一个提示符。我可以设置一个绑定来搜索提示符中的唯一短语吗?执行此操作的标准方法是编写bash脚本,将命令发回tmux
但我想推荐一个允许更灵活的脚本编写方式的mod:(我是作者)
使用此mod,您的问题可以通过以下方式解决:
bind p copy-mode ";" tcl {
set s [copy-mode-screenline -ex [copy-mode-get-cx]]
cursor-up
send-keys "?"
我编写了以下Scheme宏
(define-syntax join
(syntax-rules ()
((join (var ...) (val ...) ...)
'(((var val) ...)
...))))
当我尝试的时候
(join (a b c)
(1 2 3)
(2 4 6)
(3 6 9))
它返回以下结果
(((a 1) (a 2) (a 3))
((b 2) (b 4) (b 6))
((c 3
我将case-when语句作为宏变量,然后将其注入另一个宏,从而对一些代码进行参数化。因此,我需要将字符串转换为全局变量,但我正在努力屏蔽所有内容。我的代码的简化版本如下所示:
%macro test();
%let x_var =
case when var = 'Red' then 1
when var = 'Black***' then 2
when var = 'Deep Purple' then 3
else 4
end as var_sort
;
%global var =
我正在执行一个宏以查找字符串(使用正则表达式),并希望在大型机中的调用程序REXX中处理该正则表达式执行的返回代码。
我尝试使用PARM和、VGET和VPUT,但没有任何积极的结果
/* REXX */
ADDRESS ISPEXEC "VPUT (MRC) SHARED"
ADDRESS ISPEXEC "VIEW DATASET('XXXX.XXXX.XXXX') MACRO(REGEX)
SAY "RC IN CALLER:" RC
SAY "MRC:" MRC
宏定义:
/* REXX
具有具有以下枚举的结构:
struct Payment
enum Status
Open
Paid
Failed
def to_s
super.downcase
end
end
getter status : String
end
如何访问宏中的枚举名称以创建方法,如open?、paid?和failed?
解决方案
基于@Jonne Haß的提议,这就是我想要实现的目标:
{% for value in Status.cons
标签: Macros
Doxygen
preprocessorcode-documentationvariable-expansion
我有一些类似以下示例的代码:
/**@文件HelloPi.c*/
/**pi的定义*/
#定义PI 3.1415
/**@简要介绍主要功能。
*@details打印#PI的值,实际定义为3.1415*/
void main()
{
printf(“pi的值是%f\n”,pi);
}
在我的doxygen dokumentation中,我通常不希望对PI(和其他定义)进行宏扩展。
但在文档中的一段中,我需要pi的值(例如,主函数的@details描述)
是否有可能在文档的这一部分使用命令或其他方
1 2 3 4 5 6 ...
下一页 最后一页 共 55 页