You wont be anymore able to build the parse tree inside the head arguments of a DCG. Like this here wont work anymore:
read_clause(W, (V+L)) --> ...
Its the same problem with other Picat style rules that you need to insert (=)/2, unless you introduce Picat function notation as well. So you would need to do something like:
read_clause(W, R) ==> R = (V+L), ...
On the other hand, because you need to insert
(=)/2, you get more steadfastness, especially if you do it after the
What is Picat function notation? Well its the facility that Picat also allows
(=)/2 in the head. But I did not yet figure out how Picat handles
(=)/2 in the head. But for example Jan W. example:
value_type1(Value, Type), integer(Value) => Type = integer.
Could be written with Picat function notation as follows?
value_type1(Value) = integer, integer(Value) => true.
Not 100% sure what the semantic is. As seen above, Picat function notation has the benefit that it inserts the
(=)/2 for you, and you don’t need to introduce the extra variable
But current Picat implementation does a little bit more. You might need quoting
($)/1, and write
value_type1(Value) = $integer. Not sure about this.