我想要一个我称之为def-foo的宏.Def-foo将创建一个函数,然后将此函数添加到集合中.
所以我可以打电话
(def-foo bar ...)
(def-foo baz ...)
Run Code Online (Sandbox Code Playgroud)
然后会有一些设置,例如all-foos,我可以称之为:
all-foos
=> #{bar, baz}
Run Code Online (Sandbox Code Playgroud)
从本质上讲,我只是想避免重复自己.我当然可以用正常方式定义函数,(defn bar ...)然后手动编写集合.
一个更好的选择,比宏观想法更简单,将做:
(def foos #{(defn bar ...) (defn baz ...)} )
Run Code Online (Sandbox Code Playgroud)
但我仍然很好奇是否有一个很好的方式让宏观思想发挥作用.
从Incanter数据集中获取一系列列(作为向量或其他)的最佳方法是什么?
我想到了:
(to-vect (trans (to-matrix my-dataset)))
Run Code Online (Sandbox Code Playgroud)
但理想情况下,我想要一个懒惰的序列.有没有更好的办法?
在C++ 11之前,如果我有一个在大型对象上运行的函数,我的本能就是用这种原型编写函数.
void f(A &return_value, A const ¶meter_value);
Run Code Online (Sandbox Code Playgroud)
(这里,return_value只是一个空白对象,它将接收函数的输出.A只是一些庞大且复制成本高的类.)
在C++ 11中,利用移动语义,默认建议(据我所知)更直接:
A f(A const ¶meter_value);
Run Code Online (Sandbox Code Playgroud)
是否仍然需要以旧方式执行此操作,传入一个对象来保存返回值?
是否有Clojure和ClojureScript的宏,该宏允许您根据在Clojure还是Clojurescript中编译文件来插入不同的表达式?
(if-clojurescript
(my clojurescript definition)
(my clojure definition))
Run Code Online (Sandbox Code Playgroud)
本质上,我在寻找一些#ifdef SOME_PLATFORM您可能会看到的宏,例如C / C ++代码。我认为这对于希望成为交叉功能一部分的文件很有用,但是对于该文件的一小部分在Clojure / ClojureScript之间不兼容。
我试图在Cython C++页面上构建"在cython中使用c ++" 的例子,但是setup似乎没有识别语言c ++.
从同一页面获取的文件是:
Rectangle.cpp
#include "Rectangle.h"
using namespace shapes;
Rectangle::Rectangle(int X0, int Y0, int X1, int Y1){
x0 = X0;
y0 = Y0;
x1 = X1;
y1 = Y1;
}
Rectangle::~Rectangle() {}
int Rectangle::getLength() {
return (x1 - x0);
}
int Rectangle::getHeight() {
return (y1 - y0);
}
int Rectangle::getArea() {
return (x1 - x0) * (y1 - y0);
}
void Rectangle::move(int dx, int dy) {
x0 += dx;
y0 += dy; …Run Code Online (Sandbox Code Playgroud) 在我的mac上进行了最新的软件更新之后,我无法在没有sudo的情况下编译和链接c ++ hello world程序.
该程序(helloworld.cpp):
#include <iostream>
int main(){
std::cout << "hello world\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
调用:
clang++ helloworld.cpp
Run Code Online (Sandbox Code Playgroud)
失败错误:
ld:无法写输出文件:a.out用于体系结构x86_64 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
但如果我在sudo下这样做,
sudo clang++ helloworld.cpp
Run Code Online (Sandbox Code Playgroud)
这里没有问题.
编辑,再次:答案结果证明不是工作目录权限,正如一些人建议,但与我的hello world程序的输出文件a.out相关联的权限.感谢Petesh的解决方案.
我在clojure中定义的主要方法的例子都使用gen-class和(defn -main ...).是否可以使用deftype定义具有可执行主方法的类?
持久性数据结构依赖于结构的共享以提高效率.有关示例,请参见此处.
在序列化数据结构并将其写入文件或数据库时,如何保留结构共享?如果我只是天真地遍历数据结构,我将存储正确的值,但我将失去结构共享.我希望能够将包含共享组件的数据结构保存到文件中,还原它们,并且仍然可以在还原的数据中共享大部分结构.
language-agnostic serialization functional-programming persistent data-structures
clojure ×4
c++ ×3
macros ×2
algorithm ×1
c++11 ×1
clang ×1
consistency ×1
cython ×1
distributed ×1
dry ×1
incanter ×1
macos ×1
persistent ×1
python ×1
reader-macro ×1
xcode6 ×1