小编Tra*_*ers的帖子

通过URL启动intellij

是否可以注册一些协议,然后通过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

url jvm intellij-idea

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

Javadoc API:支持varargs多远?

我想写自定义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类.

java javadoc variadic-functions

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

DCG扩展:坚定不移被忽视了吗?

假设我有以下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

prolog dcg iso-prolog

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

DCG用于惯用语短语偏好

我有一个手动制作的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)

prolog dcg iso-prolog

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

Prolog findall/3:不止一个包

我正在为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)谓词?

prolog prolog-findall

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

OCR为图像提供叠加HTML?

我正在寻找一种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

html ocr

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

如何使用带有swing HTML文本的预包装?

如何使用
Swing HTML文本组件的CSS空白属性预包装?

html java swing text

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

函数式编程语言中的呼叫站点代码替换

我只是想知道在功能
语言中是否有可能进行呼叫站点替换.我认为这
是一种特殊的懒惰形式.

基本上我会用函数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

haskell functional-programming

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

如何使用和findall/3元谓词

我想写这个:

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'.这有可能吗?

prolog prolog-findall

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

什么都不做的逻辑运算符的名称是什么?

当我在一个变量上列出所有布尔运算符时,我找到一个什么都不做的运算符:

A f(A)
0 0
1 1
Run Code Online (Sandbox Code Playgroud)

这个运营商有官方名称吗?

再见

boolean-logic

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

为并发删除的名称维护唯一对象

我正在使用以下编程习惯用法.我保持一个同步的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.

任何想法如何做到这一点?这是一个已知的模式吗?

再见

java concurrency hashmap

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

为什么prolog的ISO模块标准失败?

这里的介绍中,它指出Prolog的ISO模块标准是失败的.任何人都可以详细说明这个吗?

standards iso module prolog iso-prolog

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

将二进制谓词转换为十进制谓词

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 swi-prolog prolog-lists

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