如何在序言中定义字符串连接运算符?

问题描述

我正在处理序言中的字符串,我想避免在规则中使用过多的临时变量。

我想改变这样的东西:

process_str(Str,Next) :-
    is_valid_pattern0(Pattern0),concat(Pattern0,Tail0,Str),concat("->",Tail1,Tail0),is_valid_pattern1(Pattern1),concat(Pattern1,Tail2,Tail1),concat("|",Next).

使用串联运算符定义,如下所示:

process_str(Pattern0.."->"..Pattern1.."|"..Next,is_valid_pattern1(Pattern1).

我相信它将更具可读性,但要根据定义运算符的方式多做一些操作。

我发现文档讨论的是defining operators,但据我所知,只能定义谓词运算符,而不能定义可以“返回值”的函数运算符(例如+运算符)。

请告诉我为什么我错了,或者如何定义这样的串联运算符。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)