我目前正在创建一个 SWI-Prolog 模块,为 swipl-win 窗口添加制表符完成功能。到目前为止,我实际上已经让它一次读取一个字符而不会停止/返回任何内容,直到键入制表符为止。我还已经写返回一个不完全输入术语的所有可能的完成,通过使用电流的术语列表上子串匹配谓词(通过获得current_functor/2,current_arithmetic_function/1,current_predicate/2等[使用谓词将最终被上下文基于关])。
如果您想查看我的代码,它就在这里……请记住,我还不是 Prolog 大师(非常欢迎友好的提示)。
注意: “嘿,这是否与任何已定义的术语相匹配?” predicate 只检查现在是否有任何以子字符串开头的当前谓词等。最终,它将使用上下文(“插入符号是否在'单词'的中间?”)来确定子字符串在任何潜在的补全中的位置。
目前,我已经说过谓词匹配字符串(不是原子),因为我读的字符串是记忆更容易,这样,因为他们不必像原子等独特的...但我不知道这是否是值得的,如果我可能只是首先将事物转换为字符串(取决于我在术语中的阅读方式;我正在考虑使用with_output_to直接写入字符串),然后无论如何都会创建原子。(希望我听起来不会太困惑。)现在我只是想决定是使用原子还是字符串。(但字符串不算原子吗?)
注意: 这很大程度上取决于我对这个问题的回答,因为我将根据在这个项目中使用字符串来做出决定。
我应该使用字符串(因此sub_string/5)还是原子(因此sub_atom/5)?
我正在尝试编写一个适用numbervars/3于术语匿名变量的SWI-Prolog谓词,但保留用户提供的非匿名变量名称.我最终计划添加一些钩子term_expansion(或类似的东西).
期望输出的示例:
?- TestList=[X,Y,Z,_,_].
> TestList=[X,Y,Z,A,B].
Run Code Online (Sandbox Code Playgroud)
对YAP prolog中保留变量名称的转换术语到原子的问题的答案显示了如何使用read_term获取术语中使用的变量名称作为原子.此列表(格式为[X ='X',Y ='Y',...])不包含匿名变量,与获取的变量列表不同term_variables,使匿名变量的隔离相当简单.
然而,如果它只能应用于直接从终端读取的术语,则这个伟大特征的有用性有些限制.我注意到答案中的所有示例都涉及该术语的直接用户输入.是否有可能获得(作为原子)未通过直接用户输入获得的术语的变量名称?也就是说,是否有某种方法可以将一个术语(保留变量名称)"写入"某个不可见的流,然后"读取"它就好像它是从终端输入的一样?
或者......也许这更像是一种LaTeX-ish思路,但是在Prolog扩展/尝试将它们统一为变量之前,有一些方法可以将变量"包装"在单引号内(从而原子化它们)最终结果是它们被视为以大写字母而不是变量开头的原子?
我正在尝试学习编码Tumblr主题(我没有钱买Wordpress),我想弄清楚如何实现帖子的“无限/无穷滚动”(与分页相反);我宁愿不使用2个主要的无限滚动脚本中的任何一个,因为infinite-scroll-js(由Paul Irish 编写)的文档相当齐全(我能够使其正常工作),但是我希望对帖子的加载方式进行更多控制,因此说话,而且科迪·谢尔曼(Cody Sherman)的无限滚动代码完全没有记录,而且我也不知道应如何使用(各种各样的指令是由几位非编码人员分发的,他们对Javascript的了解少于我,这是在说些什么) 。
我不了解任何Ajax,但是我愿意根据需要阅读尽可能多的JS文档。突然添加帖子时,可以使用以下顺序吗?还是需要像Paul Irish这样理解Ajax?
上载:(身体)
获取所有.post元素(带有子元素),将它们从DOM中删除,同时将其添加到基本上只是帖子列表(数组或JS术语?)的var中
加载一些计算出的帖子数(可能会有一种算法,可能基于帖子的高度或某些东西,或者在它们到达时进行动态测量)/当用户滚动到底部时,将它们添加到动画的Masonry容器中页面,正文或砌体容器(尚未决定哪一个)
这是合理的还是我会浪费时间?
我曾经把Melpa放在我的elisp存储库列表中; 我最近意识到它的版本号必须与其他repos(例如Marmalade,正常的Elpa)完全不同,因此我删除它...因此当使用U来"标记可升级包"时,版本Melpa和另一个存储库中存在的每个包都将是Melpa版本,因为Melpa repo版本#s非常高.
示例1: 可用的Marmalade版本abl-mode为0.9.0.同一封装的可用Melpa版本是... 20130607.917?!
示例2: 可用的Marmalade版本flex-autopair为0.3.相同包装的Melpa版本是20120809.2118 ......有些东西了.
如果不是因为这意味着Emacs包经理认为是最新版本的事实,我不会担心......可能不是最新版本.由于Melpa(其他repos不具备的一些很棒的软件包,顺便说一下)显然使用了不同的编号/版本控制系统......我只是不能再包含它package-archives了.是否有某种包修复此问题/将Melpa版本号翻译为普通版并使Melpa与其他回购兼容?
elisp ×1
emacs ×1
emacs24 ×1
io ×1
iso-prolog ×1
javascript ×1
jquery ×1
prolog ×1
stream ×1
swi-prolog ×1
types ×1
variables ×1