Prolog有什么可能和不可能?

Prolog有什么可能和不可能?,prolog,logic,boolean,Prolog,Logic,Boolean,我不熟悉Prolog和逻辑范式开发,但我认为这对我的应用程序有帮助。我的第一个疑问是我能用这种语言做什么 我正在做一些文本处理/自然语言处理,我认为我的代码用逻辑语言比用Java(这就是我正在使用的并将与Prolog集成)更清晰、更简单 我现在的第一个目标是发现字符串的字符类型(字母、数字、数字等)。我有四个mais参数:hasLetter、hasDigit、hasSymbol、Has标点符号 使用Prolog,我可以有一个方法determineType(),它将根据这四个属性返回类型,或者只通

我不熟悉Prolog和逻辑范式开发,但我认为这对我的应用程序有帮助。我的第一个疑问是我能用这种语言做什么

我正在做一些文本处理/自然语言处理,我认为我的代码用逻辑语言比用Java(这就是我正在使用的并将与Prolog集成)更清晰、更简单

我现在的第一个目标是发现字符串的字符类型(字母、数字、数字等)。我有四个mais参数:hasLetter、hasDigit、hasSymbol、Has标点符号


使用Prolog,我可以有一个方法
determineType()
,它将根据这四个属性返回类型,或者只通过单个测试返回类型,比如
isDigit()
isAlphabetic()
,等等?

每个字符的类别或“类型”是一个关系,将一个字符与其类型相关联。您可以使用谓词在Prolog中对其进行编码。例如,这种谓词的一个有意义的名称是:“character_type(C,T)”。在SWI Prolog中,检查库谓词char_type/2和code_type/2以获取此信息。您可以使用它们获取角色的类型(回溯时,可能会生成替代解决方案)以及测试角色是否属于提供的类别。对于语言处理,您可能还发现确定子句语法(DCG)很有用。

听起来您还没有完全从“命令式”思维过渡到“逻辑”思维。在Prolog中,从来没有返回值——您得到的只是谓词成功或失败的情况。谓词的参数不是输入或输出,而是要统一的变量。统一是在Prolog中“返回”结果的唯一方法。我想我会把我的两分钱投进去。遥控,分子操纵,预感?xD您应该检查您正在使用的prolog系统的库,通常有很多隐藏的东西。