我目前正在Prolog上进行一个非常短的项目,只是试图将一个“过滤器”应用到列表中.我有你可以称之为过滤器准备好,但我不能应用它.如果我说明会更好:
filter(A,B)

…如果满足某些条件,则输出“true”.

filterList(A,[X,Y,Z])

…输出一个列表,其中包含第二个参数的所有元素,使得过滤器输出为false. (所以如果滤波器(A,X)为真,输出为[Y,Z]).

我已经准备好了“过滤器”功能,但现在我需要将其应用到第二个示例所示的列表中,排除当应用第一个参数时,过滤器返回true的所有元素.

因此,如果滤波器是一个简单的A == B,该函数应该接收A [A,B,A,C,D,A]并输出[B,D]过滤器适用,显然.

我在功能的基本结构上遇到麻烦,所以如果有人能为这样的功能提供一个基本的大纲,这将是一个很大的帮助.我尽可能地简化了我的情况,所以我可以采取任何你可以提供和修改它为我的需要.

提前致谢!

解决方法

如果您正在Prolog中搜索高阶函数,那么您应该明确咨询 Naish (1995),这是一个很好的资源.

他对filter / 3的定义如下(他使用差异列表符号,因此转义必须定义filter / 4):

filter(_,[],[]).
filter(P,A0-As0,As) :-
    (
        call(P,A0) -> As = A0-As1
    ;
        As = As1
    ),filter(P,As0,As1).

我对这个谓词有疑问,请在评论中问我.阅读论文也是强烈推荐的,它也是抗拒地图,折叠和撰写!请注意,他提到的许多限制(例如,缺少呼叫/ 3或更高等级的应用程序不再适用)SWI-Prolog具有= ..运算符,它解决了他所有的问题,订单逻辑可能.

Prolog:过滤列表?的更多相关文章

  1. Android和Prolog

    我在Prolog中构建了一个专家系统.有没有办法将Prolog代码合并到我的Android应用程序中,以便应用程序接受参数将它们传递给Prolog专家系统,专家系统会将答案返回给Android应用程序?(我会尝试找到源代码,但我不希望找到它!

  2. 通过PHP中的CURL获取Google Sites API – 获取“prolog中不允许使用内容”.

    总结以上是DEVMAX为你收集整理的通过PHP中的CURL获取GoogleSitesAPI–获取“prolog中不允许使用内容”.全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  3. 正则表达式 – 正则表达式匹配Prolog

    我正在尝试进行正则表达式匹配.我已经写出了所有的功能,但是他们没有按照他们的意愿工作.据我所知,当我尝试比较列表时,它有一个问题.例如,“re_contains(a,a).”给出真实(显然),“re_contains(union(a,b),a)”.但是,只要我将其列为清单,它就会失败.“re_contains(seq(a,[a,b]).”返回false.附加应该通过所有可能的组合来查找匹配,但这些

  4. 理解C函数在Windows上使用__cdecl调用prolog

    解决方法此代码由于/RTCcompileoption而发出.它将函数中的所有局部变量初始化为极有可能产生访问冲突或导致异常输出值的位模式.这有助于您了解何时忘记初始化变量.您看到分配的堆栈框架中的额外空间用于支持“编辑继续”功能.在调试时编辑函数并添加更多局部变量时,将使用此空间.将/ZI选项更改为/Zi以禁用它.

  5. SWI-Prolog中的[a | b | c]评估是什么?

    prolog中的管道操作符返回一个或多个原子头和尾部列表.在单个匹配中嵌套多个管道可以类似于以下内容:语句[a|b|c]推断a,b和c是什么?编辑到目前为止,我可以推断出的是:我更感兴趣的是找到答案的任何技术,而不是回答这个边界无用的问题.EDIT2我显然不太熟悉序言,一个简单的作业回答了我的问题…究竟发生了什么?

  6. Prolog:过滤列表?

    我目前正在Prolog上进行一个非常短的项目,只是试图将一个“过滤器”应用到列表中.我有你可以称之为过滤器准备好,但我不能应用它.如果我说明会更好:…解决方法如果您正在Prolog中搜索高阶函数,那么您应该明确咨询Naish,这是一个很好的资源.他对filter/3的定义如下:我对这个谓词有疑问,请在评论中问我.阅读论文也是强烈推荐的,它也是抗拒地图,折叠和撰写!请注意,他提到的许多限制SWI-Prolog具有=..运算符,它解决了他所有的问题,订单逻辑可能.

  7. Prolog GNU – Univ运算符?说明

    解决方法Univ(=..)将一个术语分解成成分列表,或从这样的列表中构建一个术语.尝试:bar似乎调用PredList中每个谓词的Item,其中foo追溯到Items.编辑:Kaarel是对的,univ可以由functor/3和arg/3替换,如下所示:

随机推荐

  1. 微信小程序canvas实现水平、垂直居中效果

    这篇文章主要介绍了小程序中canvas实现水平、垂直居中效果,本文图文实例代码相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  2. 使用HTML5做的导航条详细步骤

    这篇文章主要介绍了用HTML5做的导航条详细步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. H5最强接口之canvas实现动态图形功能

    这篇文章主要介绍了H5最强接口之canvas实现动态图形功能,需要的朋友可以参考下

  4. Canvas高级路径操作之拖拽对象的实现

    这篇文章主要介绍了Canvas高级路径操作之拖拽对象的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  5. html5视频自动横过来自适应页面且点击播放功能的实现

    这篇文章主要介绍了h5视频自动横过来自适应页面且点击播放,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. 详解HTML5中的picture元素响应式处理图片

    这篇文章主要介绍了详解HTML5中的picture元素响应式处理图片,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. canvas像素点操作之视频绿幕抠图

    这篇文章主要介绍了canvas像素点操作之视频绿幕抠图的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  8. html5利用canvas实现颜色容差抠图功能

    这篇文章主要介绍了html5利用canvas实现颜色容差抠图功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  9. canvas绘制视频封面的方法

    这篇文章主要介绍了canvas绘制视频封面的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. HTML5拖拽功能实现的拼图游戏

    本文通过实例代码给大家介绍了HTML5拖拽功能实现的拼图游戏,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧

返回
顶部