On 09 Jan 2015, at 15:17, Marcus Denker <marcus.denker@inria.fr> wrote:


On 09 Jan 2015, at 15:10, Evan Donahue <emdonahu@gmail.com> wrote:

Hello,

I'm currently working on an embedding of the miniKanren logic programming language in Pharo (http://minikanren.org/) and I have run into an issue with the method compilation internals I was hoping someone could shed some light on:

miniKanren has an operator, fresh, that basically evaluates a block and returns a logic variable. My current syntax for a conjunction of logic variables is:

var1 and: var2

When I try to use the same syntax for fresh:

var1 and: [ :var2 | var2 ]

Compilation fails with "Warning: and: (or:) takes zero-arg block" which seems on first glance to come from the compiler attempting to inline my and: call.

Another thing we can do��� we could remove the warning in the method #isInlineAndOr. Then the and: would be compiled as a message as in the non-block
example.

Marcus