是否可以注册一些协议,然后通过URL启动IntelliJ.我正在考虑从JVM中通过Desktop.browse()提交URL.
我的想法是URL将包含文件名参数和行号参数.然后IntelliJ将打开此文件名并滚动到给定的行号.这是一个例子:
intellij:/mypath/myfile#99
Run Code Online (Sandbox Code Playgroud)
这已经完成了吗?
再见
PS:java.awt.Desktop类
http://docs.oracle.com/javase/6/docs/api/java/awt/Desktop.html
我想写自定义doclet.我不想阅读一些使用标准doclet创建的现有javadoc.
我有问题弄清楚如何查询Javadoc API是否正式参数是varargs参数.例如,如果我有以下方法:
public static void main(String... args) {
}
Run Code Online (Sandbox Code Playgroud)
如何确定形式参数args是varargs?我查看了com.sun.javadoc.Type.但无法弄清楚如何访问这些信息.
再见
PS:反射没有帮助,因为我猜想在doclet中没有反射.在doclet中,您有例如MethodDoc反射类,而在反射中您有Method类.
假设我有以下DCG规则:
factor(X) --> "(", expr(X), ")".
Run Code Online (Sandbox Code Playgroud)
通常这将被翻译为:
factor(X, A, B) :-
[40|C] = A, expr(X, C, D), [41|B] = D.
Run Code Online (Sandbox Code Playgroud)
是否允许Prolog系统将其翻译如下,
即将统一合并到头部和目标中?
factor(X, [40|A], B) :-
expr(X, A, [41|B]).
Run Code Online (Sandbox Code Playgroud)
如果DCG扩展不会坚定,则不允许
将[41 | B]放在expr调用的第三个参数中.
但我想坚定不移,所以一切都应该没问题?
再见
PS:关于坚定性的非正式定义,请参阅:
Richard O'Keefe,2009:
"作为Prolog编程中"坚定"一词的发明者,
我应该赞成它.坚定性基本上
意味着你不能强迫谓词错误
填写输出参数错误的路径."
http://blog.gmane.org/gmane.comp.ai.prolog.swi/month=20090301
PSS:对于其他DCG翻译,请参阅最新的
DCG标准提案.附录包含DCG翻译器
源代码:
ISO/IEC DTR 13211-3:2006
明确条款语法规则
Klaus Daessler
2012年11月20日
N238 DIN草案2012-11-20
我有一个手动制作的DCG规则来选择单个单词的惯用语.DCG规则如下:
seq(cons(X,Y), I, O) :- noun(X, I, H), seq(Y, H, O), \+ noun(_, I, O).
seq(X) --> noun(X).
Run Code Online (Sandbox Code Playgroud)
第一个子句是手动制作的,因为它(:-)/2是用来代替的(-->)/2.我可以用一些使用标准DCG的子句替换这个手工制作的子句吗?
最好的祝福
PS:这是一些测试数据:
noun(n1) --> ['trojan'].
noun(n2) --> ['horse'].
noun(n3) --> ['trojan', 'horse'].
noun(n4) --> ['war'].
Run Code Online (Sandbox Code Playgroud)
以下是一些测试用例,重要的测试用例是第一个测试用例,因为它只提供n3而不是cons(n1,n2).第一个测试用例的行为是特别需要的:
?- phrase(seq(X),['trojan','horse']).
X = n3 ;
No
?- phrase(seq(X),['war','horse']).
X = cons(n4,n2) ;
No
?- phrase(seq(X),['trojan','war']).
X = cons(n1,n4) ;
No
Run Code Online (Sandbox Code Playgroud) 我正在为Fox和Geese类型的游戏编写AI.我的一个谓词看起来像这样:
moveFox(+PrevState, -NextState, -PegList, +VisitedStates, -NewVisitedStates)
Run Code Online (Sandbox Code Playgroud)
它需要一个游戏状态并与狐狸一起移动.结果状态统一,NextState实际移动统一PegList.一切都按预期工作.
我正在计算所有动作的效用得分NextState.为了能够找到效用得分最高的州,我findall/3会在比较其效用得分之前使用列表中的所有州.
findall(NextState, moveFox(...), NextStatesList)
Run Code Online (Sandbox Code Playgroud)
通过找到最大效用分数,我知道具有最高效用分数的NextState(以及其在列表中的位置).只有一个问题,目前我还没有写任何谓词来推断出要采取的行动NextState,例如:
getMove(+PrevState, +NextState, -PegList)
Run Code Online (Sandbox Code Playgroud)
而不是写这样的谓词,我宁愿使用findall/3或等效.我的问题是,是否有某种方法可以在两个不同的列表中获得两个不同的变量.我这样想(如果它会起作用):
findall([NextState, PegList], moveFox(...), [NextStatesList, MoveList])
Run Code Online (Sandbox Code Playgroud)
我可以实现这样的功能,而不必运行findall/3两次(丑陋的开销)或编写该getMove(+PrevState, +NextState, -PegList)谓词?
我正在寻找一种OCR软件,可以将叠加HTML呈现给图像.我目前正在使用一些未命名的产品.它具有OCR功能,可以对带有图像的PDF文档进行内联OCR.
内联OCR非常方便,它允许使用图像搜索PDF文档.文本也可以直接在文档中突出显示,OCR文本与底层图像对齐.不幸的是,我可以从未命名的产品中导出或存储内联OCR.
是否有其他软件可以执行和导出内联OCR?我特别感兴趣的是导出到一个由定位的段落组成的HTML,这些段落与底层图像对齐.
另见:https:
//stackoverflow.com/questions/11404805/ocr-and-the-location-of-the-image-where-the-scanned-document-came-from
我只是想知道在功能
语言中是否有可能进行呼叫站点替换.我认为这
是一种特殊的懒惰形式.
基本上我会用函数f调用某个函数f:
... (f a) ...
Run Code Online (Sandbox Code Playgroud)
然后,该函数将设法
通过带有参数b的函数g 替换自身:
... (g b) ...
Run Code Online (Sandbox Code Playgroud)
这样下一次调用(fa)的原始调用站点
实际上(gb)被调用.
提示欢迎.
再见
PS:它用于即时(JIT)编译.
多态内联高速缓存等.
参见例如:
使用多态内联缓存优化动态类型的面向对象语言
UrsHölzle,Craig Chambers,David Ungar
ECOOP '91欧洲
面向对象编程会议论文集
http://selflanguage.org/_static/published/pics.pdf
我想写这个:
paths( Result ) :-
findall( B, f(B) , Result ).
f( B ) :-
f1( B ),
f2( B ).
Run Code Online (Sandbox Code Playgroud)
只有一行.所以基本上是这样的:
paths( Result ) :-
findall( B, f1(B) AND f2(B), Result ).
Run Code Online (Sandbox Code Playgroud)
我不知道如何在目标陈述中表达'AND'.这有可能吗?
当我在一个变量上列出所有布尔运算符时,我找到一个什么都不做的运算符:
A f(A)
0 0
1 1
Run Code Online (Sandbox Code Playgroud)
这个运营商有官方名称吗?
再见
我正在使用以下编程习惯用法.我保持一个同步的HashMap与名称对象的关联.要查找对象的名称,我使用以下代码:
MyObject getObject(String name) {
synchronized(map) {
MyObject obj = map.get(name);
if (obj == null) {
obj = new MyObjec();
map.put(name, obj);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我想要专门处理这样的对象时,我会在这样的对象上使用synchronized:
synchronized(obj) {
/* do something exclusively on obj (work type I) */
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这一直一直运作良好.新要求是有I型和II型独家作品.类型I将保留对象,类型II应在完成工作后删除对象.如果我按照以下方式做某事:
synchronized(obj) {
/* do something exclusively on obj (work type II) */
}
synchronized(map) { /* not good! */
map.remove(obj);
}
Run Code Online (Sandbox Code Playgroud)
虽然该对象已从地图中删除,但我可能会将某些对象授予某些类型的工作.所以基本上,类型I工作的synchronized(obj)应该被一些新的信号量所取代,如果之前授予了类型II的工作,它就会将对象重新加入到地图中.对象应该只在没有未处理的同步时离开地图.
如果没有看到物体,那将是最好的.我会使用只有名称的API.这些对象仅用于维护名称的某些状态.但是,在完成第二类工作后,HashMap应该从名称中解放出来.但是在I型或II型工作期间,不应该锁定HashMap.
任何想法如何做到这一点?这是一个已知的模式吗?
再见
在这里的介绍中,它指出Prolog的ISO模块标准是失败的.任何人都可以详细说明这个吗?
convertBinToDec(B,D):- atom_number(S,B),
atom_length(S,L),
sub_atom(S, 0, 1, After,S1),
atom_number(S1,N),
L1 is L-1,
sub_atom(S, 1,L1, After ,S2),
atom_number(S2,B2),
convertBinToDec(B2,D1),
D is D1+((2*N)**L1).
convertBinToDec(0,0).
convertBinToDec(1,1).
Run Code Online (Sandbox Code Playgroud)
谓词采用 B 是整数形式的二进制数,应该返回 D 其相应的十进制形式,对不起,我对声明式编程语言还是个新手,但我不知道为什么我上面的代码总是错误,我觉得有什么问题使用基本情况 也不允许使用 prolog 库
prolog ×6
iso-prolog ×3
java ×3
dcg ×2
html ×2
concurrency ×1
hashmap ×1
haskell ×1
iso ×1
javadoc ×1
jvm ×1
module ×1
ocr ×1
prolog-lists ×1
standards ×1
swi-prolog ×1
swing ×1
text ×1
url ×1