小编bou*_*ekv的帖子

如何忽略不必要的论点?

是否有简单的方法可以忽略不必要的参数?

例如: (#(+ %1 %2) 1 2)返回3

我想强制这个代码

(#(+ %1 %2) 1 2 3)
Run Code Online (Sandbox Code Playgroud)

也返回3.但它回来了

java.lang.IllegalArgumentException:传递给的args(3)数量错误.

怎么改#(+ %1 %2)

我希望有一些更优雅的方式#(+ (nth %& 0) (nth %& 1)).

clojure

10
推荐指数
2
解决办法
2258
查看次数

如何从clojure中很好地调用其他JVM语言?

有时你想粘合用不同JVM语言编写的解决方案.为此,您需要调用该语言或以某种方式使用java bitecodes.Clojure中最纯粹,最安全,最好的方法是什么?

例如,从Clojure调用Scala的最佳方法是什么?

(我知道其他方法很容易.你可以通过gen-class生成.class你可以混合使用JVM语言吗?即:Groovy和Clojure,但这只是允许你使用其他语言的clojure.)

clojure

7
推荐指数
2
解决办法
1213
查看次数

如何阅读REPL中的clojure异常?

很多次,当我尝试编写一些函数时,我得到了异常.这很正常.在Java中,您可以找到异常发生的地点和原因,但在clojure异常文本中只会让我发疯.是否有一些提示如何读取clojure中的异常以及如何查找代码异常发生的位置以及原因?

例如,我将采取一些代码:

(do
 (list?)
 (list? [])
 (list? '(1 2 3))
 (list? (defn f [] (do ())))
 (list? "a"))
Run Code Online (Sandbox Code Playgroud)

当我在REPL中调用此函数时,我会得到

java.lang.IllegalArgumentException: Wrong number of args (0) passed to: core$list-QMARK- (NO_SOURCE_FILE:46)
Run Code Online (Sandbox Code Playgroud)

哪个在二线找不到问题对我帮助不大.在更复杂的代码中,它几乎不会提供任何信息.(当然它会告诉我看一下列表?有些参数错误.)我尝试在REPL中编写代码是不对的?如何在REPL中读取异常消息?有没有办法如何在REPL中获得有关异常的更好信息?

clojure

7
推荐指数
2
解决办法
652
查看次数

为什么clojure中的这么多函数对列表和向量有不同的行为以及如何改变它?

在clojure中,你有几个函数对vector和list有不同的作用.我有两个问题.

1)它有什么用?我相信clojure的创造者有很好的理由去做,但我不知道.

2)无论数据在列表或向量中,如何使这些函数的类型安全变体以相同的方式运行?

定义的函数conj具有以下行为

(conj [1 2 3] 4)
[1 2 3 4]

(conj '(1 2 3) 4)
(4 1 2 3)
Run Code Online (Sandbox Code Playgroud)

我想有一个函数my-conj具有以下行为

(my-conj [1 2 3] 4)
[1 2 3 4]

(my-conj '(1 2 3) 4)
(1 2 3 4)
Run Code Online (Sandbox Code Playgroud)

还有其他功能(cons,into,peek,pop)具有相同的行为,因此如果这种结构可以很容易地适应所有这些,那就太好了.

clojure

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

如何通过符号宏定义符号(和)的符号?

我正在尝试以下列方式定义符号a和b

a + 1 1 b
2
Run Code Online (Sandbox Code Playgroud)

我试图通过使用define-symbol-macro来做到这一点

(define-symbol-macro a '( )
(define-symbol-macro b ') )
Run Code Online (Sandbox Code Playgroud)

但这种方式不起作用.

macros symbols common-lisp

4
推荐指数
1
解决办法
1583
查看次数

如何(优雅地)一次迭代两个列表?

我想找到更好看的替代代码:

(def x (range 1 10))
(def y '(0 4 3 5 1 2 7 3 11))
(for [i (range 0 (count y))] [(nth x i) (nth y i)])
Run Code Online (Sandbox Code Playgroud)

如果我已经有了之前的结果,我可以简单地说

(def z (for [i (range 0 (count y))] [(nth x i) (nth y i)]))
(for [[x y] z] [x y])
Run Code Online (Sandbox Code Playgroud)

你能找到一些更好看的替代品吗?

示例简短易读.如果您修改它以执行更复杂的操作,则第一个示例可能会停止可读.

clojure

2
推荐指数
1
解决办法
159
查看次数

如何在clojure中创建引用/指针?

我想改变代码的正常行为

(def a 5)
(def b a)
(def a 1)
b
5
Run Code Online (Sandbox Code Playgroud)

为了这个行为

(def a 5)
(*something* b a)
(def a 1)
b
1
Run Code Online (Sandbox Code Playgroud)

它仅用于学习目的,所以请不要在此深思.

pointers reference clojure

2
推荐指数
1
解决办法
668
查看次数

如何将XML编码强制为UTF-8?

我正在尝试通过以下方式在构建的xml中强制执行编码:

XmlWriterSettings       xmlSetting = new XmlWriterSettings();
XmlWriter               xmlWriter;
Str                     res;


xmlSetting.encoding ('UTF-8');
xmlWriter = XmlWriter::newXml(xmlSetting);    
xmlWriter.writeStartDocument();
xmlWriter.writeStartElement('root');
xmlWriter.writeEndElement();
xmlWriter.writeEndDocument();
xmlWriter.flush();
res = xmlWriter.writeToString();    
info(res);
Run Code Online (Sandbox Code Playgroud)

但是,这在我的系统中的结果是:

<?xml version="1.0" encoding="utf-16"?><root />
Run Code Online (Sandbox Code Playgroud)

将编码强制为UTF-8的正确方法是什么?

文档未提供示例:https : //docs.microsoft.com/zh-cn/previous-versions/dynamics/ax-2012/system-classes/gg929065(v%3dax.60)

xml encoding axapta dynamics-ax-2012-r3

2
推荐指数
1
解决办法
193
查看次数

如何使'()成为零?

如何使Clojure的数'()nil

例如:如何制作类似的东西

(if '() :true :false) 

;to be 

:false

;Or easier 

(my-fun/macro/namespace/... (if '() :true :false))

:false
Run Code Online (Sandbox Code Playgroud)

而不仅仅是.各方面.

(= nil '()) or (my-something (= nil '()))

true
Run Code Online (Sandbox Code Playgroud)

每个代码都是(='()nil)保存.

(something (+ 1 (if (= nil '()) 1 2)))

2
Run Code Online (Sandbox Code Playgroud)

我在考虑某种自然的表达方式.哪个会看代码并替换'()nil,但是有些东西(rest '(1))和许多其他东西一样'(),我不知道如何处理它.

有人告诉我,宏可以让你建立自己的语言.我想通过改变clojure来尝试它.所以这很大关于"如何使用clojure以及如何改变它?" 而不是"我真的需要它为我的工作."

谢谢你的帮助.

clojure

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

当没有数据可显示时,如何隐藏表单中的网格?

我有 2 个链接表,它们通过 ID 链接在一起。

其中之一包含专辑列表,第二个是歌曲列表。

我将它们放在具有正确链接类型等的数据源中。

我有一个带有两个网格的表格。第一个显示专辑,第二个显示该专辑中的歌曲列表。如果专辑中有歌曲,一切正常。但如果专辑中没有歌曲,那么第二个网格上有一些值。应该没有显示任何内容。但根据之前点击的专辑和歌曲,有一些错误的信息。

我如何确保如果专辑中没有歌曲,第二个网格将为空或根本不显示?

没有问题: http: //postimg.org/image/e2pvzmbfb

带有不应该存在的数据:http ://postimg.org/image/75xjyh9xt/

表:专辑、歌曲(一首歌曲只能出现在一张专辑中,并且通过专辑 ID 链接到专辑。在歌曲表中,存在关系 Album.AlbumID==Song.AlbumID)

有两个数据源。一个链接相册 (DS_Albums)。第二个链接歌曲 (DS_Songs) 与 JoinSource DS_Albums,链接类型延迟。有两个网格链接到数据源。

axapta

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

Setf变量到计算时间?

我想将变量设置为这样的计算时间

(setf a (time (+ 1 1)))
Run Code Online (Sandbox Code Playgroud)

但不是时间我得到这个

Break 1 [7]> a
2
Run Code Online (Sandbox Code Playgroud)

如何设置计算时间?

common-lisp

0
推荐指数
2
解决办法
78
查看次数