Simon McGregor on Thu, 5 Aug 2010 10:36:42 -0700 (MST)


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [game-lang] defining static parts of games


On Thu, Aug 5, 2010 at 5:27 PM, Joel Uckelman <uckelman@xxxxxxxxx> wrote:

> Some repetition syntax would be nice. I sort of feel like doing this:
>
>  for (int r = 0; r < 4; r++) {
>    for (int c = 0; c < 4; c++) {
>      printf("hex([%d,%d])", c, r);
>    }
>  }

Ergggghhh. Please, please don't ;-)

> where the loop is *not* part of the logic program----rather, it means
> that "hex[c,r]" will be printed into the program the desired number of
> times. (Metaprogramming can be quite handy.)
>
> Or, perhaps, just do this:
>
>  hex([c,r]) :- 0 <= c & c < 4 & 0 <= r & r < 4.

I much prefer this.

> What else is going on here?
>
> * There is arithmetic.

Hurray! ;-)

> * There are some other functions which are not boolean-valued [...]
>
>    col(a)+1 = col(b)
>
>  gets translated to:
>
>    col(a,c+1) & col(b,c)
>
>  where c is a free variable. I find this harder to read.

Me too.

However, this doesn't have to reflect anything in the underlying
language model.
It could be pure syntactic sugar, with

col(a) + 1 = col(b)

being internally translated into

exists((c, d), _col(a, d) and _col(b, c) and equals(d, plus(c, 1)))

...although on second thoughts, we don't really want to be able to
quantify over the integers. That's a quick route to doom.


Simon
_______________________________________________
game-lang mailing list
game-lang@xxxxxxxxx
http://lists.ellipsis.cx/mailman/listinfo/game-lang