我刚刚sqlalchemy在我的计算机上安装了该模块,但是当我输入import sql并TAB在ipython提示符中时,自动完成功能只会向我建议内置sqlite3模块.
如何让ipython也在sqlalchemy导入自动完成时提出建议?
在Javascript中克隆XML文档的最佳方法是什么?
我试过了
var newDocument = myDocument.cloneNode(true);
Run Code Online (Sandbox Code Playgroud)
但那只是返回null.我也考虑过这样做
var newNode = myDocument.documentElement.cloneNode(true);
Run Code Online (Sandbox Code Playgroud)
但这对我的目的来说还不够,因为这样新节点ownerDocument和以前一样.
在处理中缀运算符时,有没有办法使用<$>并且<*>看起来很好看?我觉得
((++) <$> a <*> ((++) <$> b <*> c ))
Run Code Online (Sandbox Code Playgroud)
看起来更加混乱
a ++ b ++ c
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有更好的方式.
stdout :: () -> Consumer String IO r
stdout () = forever $ do
str <- request ()
lift $ putStrLn str
stdin :: () -> Producer String IO ()
stdin () = loop
where
loop = do
eof <- lift $ IO.hIsEOF IO.stdin
unless eof $ do
str <- lift getLine
respond str
loop
Run Code Online (Sandbox Code Playgroud)
正如教程本身所述,由于需要检查输入的结束,P.stdin有点复杂.
有没有什么好方法可以重写P.stdin,不需要手动尾递归循环,并使用像P.stdout那样的高阶控制流组合器?在命令式语言中,我将使用结构化的while循环或break语句来执行相同的操作:
while(not IO.isEOF(IO.stdin) ){
str <- getLine()
respond(str)
}
forever(){
if(IO.isEOF(IO.stdin) ){ break }
str <- getLine()
respond(str)
}
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试使用Flex + Bison编写一个小编译器,但我在错误处理方面有点迷失,特别是如何使所有东西都融合在一起.为了激发讨论,请考虑我用于字符串文字的以下词法分析器片段:
["] { BEGIN(STRING_LITERAL); init_string_buffer(); }
<STRING_LITERAL>{
\\\\ { add_char_to_buffer('\\'); }
\\\" { add_char_to_buffer('\"'); }
\\. { /*Invalid escape. How do I treat this error?*/ }
["] { BEGIN(INITIAL); yylval = get_string_buffer(); return TK_STRING; }
}
Run Code Online (Sandbox Code Playgroud)
如何处理无效转义的情况?现在我只是打印一条错误消息并打电话exit但我更愿意继续前进并在可能的情况下检测每个文件多个错误.
我的问题:
通过Dojo执行AJAX时,我们可以传递两个回调,一个在成功请求后执行,另一个在错误后执行:
dojo.xhr("GET",{
url: myURL,
content: messageContents,
load: function(returnData, ioArgs){
//This is called on success
},
error: function(returnData, ioArgs){
//This is called on failure
}
});
Run Code Online (Sandbox Code Playgroud)
我在文档中找不到什么被定义为错误.我猜任何返回码> = 400的东西,但我不确定.
我正在转换一个相对较大的Javascript,目前只能在Internet Explorer上运行,以使其在其他浏览器上运行.由于代码广泛使用XPath,我们提供了一些兼容性功能,使事情变得更容易
function selectNodes(xmlDoc, xpath){
if('selectNodes' in xmlDoc){
//use IE logic
}else{
//use W3C's document.evaluate
}
}
Run Code Online (Sandbox Code Playgroud)
这大部分工作正常但我们只是遇到了IE中的位置从零开始的限制,但在其他浏览器使用的W3C模型中,它们是基于单一的.这意味着要获得我们需要//books[0]在IE和//books[1]其他浏览器中执行的第一个元素.
第一个想法是使用正则表达式向查询中出现的所有索引添加一个,如果我们使用document.evaluate版本:
function addOne(n){ return 1 + parseInt(nStr, 10); }
xpath = xpath.replace(
/\[\s*(\d+)\s*\]/g,
function(_, nStr){ return '[' + addOne(nStr) + ']'; }
);
Run Code Online (Sandbox Code Playgroud)
这种基于正则表达式的解决方案是否相当安全?
例如,它将无法替换索引,//books[position()=1]但由于IE似乎不支持position()我们的代码没有使用,我认为这种特殊情况不会成为问题.
我下载了Sarissa,看看他们是否有办法解决这个问题,但看了源代码后他们显然没有?
我想在W3C版本中添加一个,而不是在IE版本中减去一个以减轻我的转换工作量.
我们决定通过设置选择语言来重写代码以在IE中使用适当的XPath
xmlDoc.setProperty("SelectionLanguage", "XPath");
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用原始递归函数在haskell中创建一个模数函数.我知道这是可能的(因为它在维基百科上的示例函数列表中)
而且我知道我在逻辑上也是这样做的..但我无法实现它!
IE,逻辑是(不是原始递归或haskell)
function mod(a, b){
while(a > b)
a -= b
return a;
}
Run Code Online (Sandbox Code Playgroud)
我可以使用递归定义(再次不是haskel)
function mod(a, b){
if(a < b) return a;
return mod(a - b, b);
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法使用原始递归函数来实现它.我不能做的是<b的逻辑
我认为要真正解决我的问题我需要某种定义的逻辑,例如(再次不是haskel)
reduce(a, b)
= a >= b -> a-b
otherwise x
Run Code Online (Sandbox Code Playgroud)
如果有人能帮我解决这个问题,我真的很感激,谢谢
编辑::我想可能定义一个模数函数利用除法,即mod(a,b)= a - (a/b)*b,但由于我的原始递归函数除法依赖于模数我不能做哈哈
对于单元测试,我希望能够检查某个返回的对象是否是XML文档.这样做的最佳方法是什么?
我目前正在测试doc.implementation(第一个想到的DOM属性)但是有更好的方法吗?另外,有没有一种很好的方法来区分HTML文档中的XML文档?
我正在为我的Lua项目编写一些测试脚本,我想确保它们在可用的不同Lua版本下正确运行.由于我的单元测试框架可能使用错误的Lua版本,如果我错误配置它,我希望是额外的安全,并在运行时检查我的测试运行的Lua版本.最好的方法是什么?
我知道分开5.1和5.2的快速方法是检查_VERSION全局,但我如何区分常规Lua 5.1和LuaJIT?
javascript ×4
haskell ×3
xml ×2
ajax ×1
applicative ×1
autocomplete ×1
bison ×1
control-flow ×1
dojo ×1
dom ×1
flex-lexer ×1
ipython ×1
lex ×1
lexer ×1
lua ×1
luajit ×1
module ×1
primitive ×1
python ×1
xpath ×1
yacc ×1