SWI-Prolog
上个月突然看到Prolog这门语言,它特殊的语法吸引了我,但是经过我一段时间的学习,发现它也不像网络上传说的那样神奇,不过我依然对它很感兴趣,有前辈说Prolog本身并不强大,但是用来作为一门辅助语言解决一些特殊的问题还是很有效的,碰巧我是干C#的,就查了查怎样把Prolog跟C#结合起来,但是我百度出来的资料实在只能用稀少来形容。没办法只能Google了,话说老D的hosts文件挺好用的。
好在作为一名高级码农我也会一点English,思考了半天终于把how to use Prolog 这几个单词打出来了,然后神奇的Google帮我给了几个选项
让我不禁感叹,科技改变世界,代码改变世界。
虽然我英文书写能力不强,但是阅读能力还是可以的,找了几篇帖子终于找到了几种解决方案,比如P#,SWI-Prolog等等。。
经过几番对比,最终我选了SWI,http://www.swi-prolog.org/ 这是它的官网,里面有算是比较全面的帮助文档等等,然后又是一番折腾之后确定了需要的两个文件,一个SWI-Prolog的安装程序,还有一个DLL文件,这两个文件都分为32位跟64位两种,首先安装SWI,然后创建一个控制台程序,引用SwiPlCs.dll。
好了,准备工作做完了,接下来就开始编码了,我参照官方给的例子写了一段code,然后怀着激动的心情按下ctrl+f5 然而结果跟我想象中的并不一样,like this
这是shenmegui?怎么跟说好的不一样?我急忙上google查资料,果然,国外大神也有碰到这个问题的,官网也有关于这个错误的说明,机智的我依靠扎实的英语基础加上浏览器的网页翻译功能终于理解了一大半,大概意思就是没有配置环境变量,大概跟java是一个道理,于是我添加了SWI_HOME_DIR这个环境变量,然后继续运行,当然,并没有什么卵用,依然是上面的错误,接下来我试了数十种方法,换成32位的dll,装一个win7的虚拟机加vs2010,装xp的虚拟机加vs2010,各种方法都试了,结果依然是这样,折腾了几天我几乎放弃了。
碰巧今天晚上无聊,又google了一下关于这个的问题,突然在官网看到这个文档http://www.swi-prolog.org/pack/file_details/swicli/doc/introduction-SbsSW.htm
里面说把bin目录添加到PATH环境变量,我抱着试一试的心态在代码中加上这一句
Environment.SetEnvironmentVariable("PATH", @"C:\Program Files\swipl\bin");
然后ctrl+f5,然后这个文章就结束了,妈的真的可以,折腾了这么久就是因为这个原因
SWI-Prolog的更多相关文章
- swi prolog 与c#
最近,玩了一下prolog语言,感觉还是很有意思.由于我是学c#的,所以就不禁想看看c#如何与prolog进行结合,在网上找了一下,发现有个swi prolog对c#的dll,下载官网:http:// ...
- (原)在ubuntu 中安装 swi prolog 和 简单的使用
参考网址:http://www0.cs.ucl.ac.uk/staff/mahmed/teaching/intro.html 参考网址:http://www.swi-prolog.org/build/ ...
- 七种Prolog解释器/编译器
http://blog.sina.com.cn/s/blog_494e45fe0100lh1v.html PROLOG 人工智能领域常用的语言,开发自然语言分析,专家系统,以及所有和智能有关的程序,都 ...
- eclipse 使用prolog编程
第一步:在电脑上安装swi-prolog 相应环境下载地址http://www.swi-prolog.org/download/stable 第二步: eclipse-help-install new ...
- 人工智能技术导论——逻辑程序设计语言PROLOG
最近在复习人工智能导论,里面介绍了一种逻辑关系语言PROLOG,但这本书里面用到的编译器是Turbo PROLOG,这个编译器早就被淘汰了,我后来找的了它的升级版Visual PROLOG,但一些语法 ...
- how to use Prolog in C#? SWI-Prolog
上个月突然看到Prolog这门语言,它特殊的语法吸引了我,但是经过我一段时间的学习,发现它也不像网络上传说的那样神奇,不过我依然对它很感兴趣,有前辈说Prolog本身并不强大,但是用来作为一门辅助语言 ...
- DOM解析XML报错:Content is not allowed in prolog
报错内容为: Content is not allowed in prolog. Nested exception: Content is not allowed in prolog. 网上所述总结来 ...
- Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)
org.apache.jasper.JasperException:xxx.jsp(1,1) Page-encoding specified in XML prolog (UTF-8) is diff ...
- prolog 阶段总结
http://blog.csdn.net/mwsong/article/details/1766382 到现在为止,我们已经对Prolog有了一个基本的了解,现在有必要对我们所学过的知识做一个系统 ...
- prolog 规则
规则 规则由几个互相依赖的简单句(谓词)组成.用来描述事实之间的依赖关系,如:因果关系,蕴含关系,对应关系 规则的实质就是存储起来得查询 其语法结构如下: head:-body head 为谓词的定义 ...
随机推荐
- memcached 分布式聚类算法
memcached 分布式集群,该决定必须书面开发商自己.和redis 由分布式server决定.上 memcached 有两个选项用于分布式.第一个是:模运算 另一种是:一致性hash 分布式算法. ...
- WPF DataGrid_SelectChanged获取单元内容
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) { ...
- cocos2d-x笔记(十一)Lua发展飞机战争-5-
让飞机动
然后在飞机上已被添加到游戏,下一步是让它动起来.主要是为了应对触摸事件. 在C++通过重写ccTouchBegan().ccTouchMoved().ccTouchEnded()三个函数来响应触摸事件 ...
- C# 如何获取某用户的“我的文档”的目录
Console.WriteLine(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); System.E ...
- http1.0 和 http1.1 区别
http1.0 和 http1.1 主要区别 1.背景 KeepAlive是就是通常所称的长连接.KeepAlive带来的好处是可以减少tcp连接的开销,这对于短response body的请求效 ...
- Red Gate系列之六 SQL Test 1.0.12.3 Edition SQL测试工具 完全破解+使用教程
原文:Red Gate系列之六 SQL Test 1.0.12.3 Edition SQL测试工具 完全破解+使用教程 Red Gate系列之六 SQL Test 1.0.12.3 Edition S ...
- 基于 Android 的 3D 视频示例代码
笔者:Mark Liu 下载样本代码 简单介绍 在Android 中,创建一个可以播放视频剪辑的应用很easy:创建一个採用 3D 图形平面的游戏应用也很easy.可是,创建一个可以在 3D 图形对象 ...
- hdu 4557 非诚勿扰 vector的应用 原来vector 可以删除指定位置元素 不过消耗大
非诚勿扰 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submi ...
- 数据结构读书笔记(二)(C语言)
(一)循环链表 存储类型 typedef struct LNode { ElemType data; struct LNode *next; }; typedef struct LNode *Link ...
- Jenkins(转)
1 修改jenkins的根目录,默认地在C:\Documents and Settings\AAA\.jenkins . .jenkins ├─jobs│ └─JavaHelloWorld│ ...