how to use Prolog in C#? 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,然后这个文章就结束了,妈的真的可以,折腾了这么久就是因为这个原因
how to use Prolog in C#? 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,但一些语法 ...
- 使用prolog逻辑语言解决爱因斯坦斑马难题
如果你想获得更好的阅读体验,可以前往我在 github 上的博客进行阅读,http://lcomplete.github.io/blog/2013/06/28/sevenlang-prolog/. 目 ...
- 七周七语言之使用prolog解决爱因斯坦斑马难题
如果你想获得更好的阅读体验,可以前往我在 github 上的博客进行阅读,http://lcomplete.github.io/blog/2013/06/28/sevenlang-prolog/. 目 ...
- eclispe中使用python库 pyswip 进行prolog编程
from pyswip import Prolog prolog = Prolog() prolog.assertz("father(michael,john)") prolog. ...
- Atitit.5gl 第五代语言编程语言 PROLOG教程 人工智能语言的标准 与实现
Atitit.5gl 第五代语言编程语言 PROLOG教程 人工智能语言的标准 与实现 1. 第五代语言就是自然语言又被称为知识库语言或人工智能语言,1 2. 人工智能语言特点2 2.1. 试探法2 ...
随机推荐
- Linux 系统分区
合理的系统分区,便于后期管理和提高文件的搜索速度 分区格式说明 linux分区不同于windows,linux下硬盘设备名为(IDE硬盘为hdx(x为从a—d)因为IDE硬盘最多四 个,SCSI,SA ...
- 【转】 如何提高自己的acm个人能力
2011-05-17 21:26 1429人阅读 评论(0) 收藏 举报 算法网络blog八卦游戏读书 转载自 简单de数字 最终编辑 fading_code by zfy0701 本来以为HNU ...
- java中Integer比较需要注意的问题
java中Integer比较需要注意的问题 package com.srie.test; import java.util.HashMap; import java.util.Map; public ...
- 关于多字节字符入库失败处理(所谓的Emji),该处理是舍弃特殊字符
具体处理方法及样例如下: /** * 屏蔽超过三个字节以上的字符 * @param strByte * @return */ public static String filterUtf8(byte[ ...
- 《JAVASCRIPT高级程序设计》第二章
把javascript应用在网页中,需要涉及web的核心语言-html:如何让javascript既能与html共存,又不影响页面的显示效果,经过长时间的讨论.试错,最终的决定是为web增加统一的脚本 ...
- 内功心法 -- java.util.ArrayList<E> (4)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- 使用python制作ArcGIS插件(4)界面交互
使用python制作ArcGIS插件(4)界面交互 by 李远祥 插件界面部分,除了一开始在设计器中设计的这些界面元素之外,还可以与操作系统进行一些输入输出的交互,这部分的实现全部在pythonadd ...
- vue.js 常用语法总结(一)
作者:曾萍,目前就职于京东商城. 概述 2016年已经结束了.你是否会思考一下,自己在过去的一年里是否错过一些重要的东西?不用担心,我们正在回顾那些流行的趋势.通过比较过去12个月里Github所增加 ...
- 导入AS项目出现类文件全部报红色J 原因
大家可能遇到过这么一个问题 就是用androidStudio 导入一个新的demo的时候会出现下图的字样 看了是不是很懵逼 我当时看了也是一脸懵逼 这是什么玩意啊.也不报错.也不提示哪里错了 后来我 ...
- self、 superclass 、 super的区别
self. superclass . super self : 当前方法的调用者 class:获取方法调用者的类对象 superclass:获取方法调用者的父类对象 super:不是一个指针,编译指示 ...