我经常发现以下类型的增量定义很有用:
(define (foo) (display "bar"))
(foo)
;prints bar
(define foo (let ((bar foo))
(lambda ()
(display "foo")
(bar))))
(foo)
;prints foobar
Run Code Online (Sandbox Code Playgroud)
如何使用宏预先形成此类增量定义?我无法让let-syntax提供相同的功能.
目前我使用plt方案,但也希望在不同的lisp实现中看到答案.
编辑:
天真的我想做以下事情:
(define-syntax foo
(syntax-rules ()
((_) (display "bar"))))
(define-syntax foo
(let-syntax ((old-foo (syntax-rules () ((_) (foo)))))
(syntax-rules ()
((_) (begin
(display "foo")
(old-foo))))))
Run Code Online (Sandbox Code Playgroud)
将朴素宏翻译为工作plt方案宏:
(require-for-syntax scheme/base)
(define-syntax foo
(syntax-rules ()
[(foo) (display "bar")]))
(define-syntax foo
(let ([old (syntax-local-value #'foo)])
(lambda (stx)
#`(begin #,((syntax-rules ()
[(_) (begin (display "foo"))]) stx)
#,(old #'(_))))))
(foo)
Run Code Online (Sandbox Code Playgroud)
如果我错过了一个更好的方法让我知道.
我很好奇其他人如何在没有DBA的情况下解决了许多(10+)开发人员维护和同步数据库更改的问题?我的意思是,基本上,如果有人想要对数据库进行更改,那么采取哪些策略呢?(即我已经创建了一个'Car'模型,现在我想将适当的DDL应用于数据库等.)
我们主要是一个Python商店,我们的ORM是SQLAlchemy.以前,我们用这样的方式编写了我们的模型来使用我们的ORM创建模型,但是我们最近放弃了这个模型,因为:
我们解决这个问题的方法是基本上有一个"看门人",他会检查数据库中的每个更改,并将所有接受的数据库更改应用到accepted_db_changes.sql文件中,从而需要进行任何数据库更改的开发人员将他们的请求放入proposed_db_changes.sql文件中.我们检查这个文件,并且,当它更新时,我们都将更改应用到我们的开发机器上的个人数据库.我们不在模型上创建索引或约束,它们明确地应用于数据库.
我想知道维护数据库模式的一些策略是什么,如果我们看起来合理的话.
谢谢!
这是我所拥有的函数的第一部分导致我的程序崩溃:
vector<Student> sortGPA(vector<Student> student) {
vector<Student> sorted;
Student test = student[0];
cout << "here\n";
sorted.insert(student.begin(), student[0]);
cout << "it failed.\n";
...
Run Code Online (Sandbox Code Playgroud)
它在sorted部件处崩溃,因为我可以在屏幕上看到"here"但不是"它失败了".出现以下错误消息:
Debug Assertion Failed!
(a long path here...)
Expression: vector emplace iterator outside range
For more information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
Run Code Online (Sandbox Code Playgroud)
我不确定现在是什么导致了这个问题,因为我在其他地方有一个类似的代码行student.insert(student.begin() + position(temp, student), temp);没有崩溃(position返回一个int并且temp是struct Student的另一个声明).我该怎么做才能解决问题,第一个插入与第二个插入有什么不同?
有许多方法可以表示+1百万个UTF-8字符.用macron(?)取拉丁语首都"A" .这是unicode代码点U+0100,十六进制数0xc4 0x80,十进制数196 128和二进制数11000100 10000000.
我想创建一个前65,535个UTF-8字符的集合,用于测试应用程序.这些都是代码点U+FFFF(byte3)之前的unicode字符.
是否可以执行类似for($x=0)循环的操作,然后将结果十进制转换为另一个基数(如十六进制),这将允许创建匹配的unicode字符?
我可以使用以下内容创建值?:
$char = "\xc4\x80";
// or
$char = chr(196).chr(128);
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何将其转变为自动化流程.
// fail!
$char = "\x". dechex($a). "\x". dexhex($b);
Run Code Online (Sandbox Code Playgroud) 我想知道当存在非静态等价物时使用静态成员函数是否有任何优点.它会导致更快的执行(因为不必关心所有成员变量),或者可能更少使用内存(因为没有包含在所有实例中)?
基本上,我正在看的函数是一个实用函数,用于旋转一个整数数组,表示像素颜色围绕任意中心点的任意度数.它被放置在我的抽象Bullet基类中,因为只有子弹将使用它,我不希望在某个实用程序类中调用它的开销.它有点太长了,并且在每个派生的子弹类中使用,使得内联可能不是一个好主意.您如何建议我定义此功能?作为Bullet的静态成员函数,Bullet的非静态成员函数,或者可能不作为Bullet的成员但在Bullet.h中的类外定义?各有哪些优缺点?
我有Karmic Koala默认安装了Python 2.6.
但是我无法运行任何Python App Engine项目,因为它们需要Python 2.5和python ssl.
要安装ssl,我首先安装了python2.5-dev,同时遵循我在其他地方找到的一些说明.
sudo apt-get install libssl-dev
sudo apt-get install python-setuptools
sudo apt-get install python2.5-dev
sudo easy_install-2.5 pyopenssl
Run Code Online (Sandbox Code Playgroud)
但是,我担心这对我的Ubuntu安装不利,因为当你在命令行输入'python'时,Ubuntu希望看到Python的2.6版本.相反,它说'2.5.5'.
但是App Engine仍然无法工作.每当我尝试运行我的Python应用程序时,我都会继续遇到与SSL相关的错误:
AttributeError: 'module' object has no attribute 'HTTPSHandler'
Run Code Online (Sandbox Code Playgroud)
UPDATE1:通过键入以下内容,检查是否通过这些命令实际安装了SSL:
$ python2.5
Python 2.5.5 (r255:77872, Apr 29 2010, 23:59:20)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named ssl
>>>
Run Code Online (Sandbox Code Playgroud)
如您所见,SSL仍未安装,这解释了持续的App …
我最近接受了这个采访问题:
给定12小时模拟时钟,以度为单位计算小时和分针之间的较小角度.尽你所能精确.
我想知道什么是最简单,最可读,最精确的算法.欢迎使用任何语言的解决方案(但如果您认为有必要,请稍微解释一下).
我想制作一个双边框,但两者之间没有空格,双边框应该是不同的颜色.我尝试使用图像,但我认为CSS可能可以为我执行这项工作,我搜索网但很难找到任何接近.
我想要的是总共2px虚线边框,顶部颜色为#a4a4a4,底部颜色为#474747.
知道我怎么能这样做而不是创建2个div?
以下代码无法编译.我收到一条错误消息:错误C2039:'Asub':不是'C'的成员
有人能帮助我理解这个吗?
试过VS2008和2010编译器.
template <class T>
class B
{
typedef int Asub;
public:
void DoSomething(typename T::Asub it)
{
}
};
class C : public B<C>
{
public:
typedef int Asub;
};
class A
{
public:
typedef int Asub;
};
int _tmain(int argc, _TCHAR* argv[])
{
C theThing;
theThing.DoSomething(C::Asub());
return 0;
}
Run Code Online (Sandbox Code Playgroud) c++ ×3
python ×2
angle ×1
crash ×1
css ×1
database ×1
game-engine ×1
insert ×1
lisp ×1
macros ×1
math ×1
performance ×1
php ×1
postgresql ×1
precision ×1
scheme ×1
sqlalchemy ×1
ssl ×1
string ×1
templates ×1
ubuntu-9.10 ×1
unicode ×1
utf-8 ×1
vector ×1