Stringは、4.2rcリリース前に「一時的に導入されたもので、削除する予定」と聞いていました。
もしかしたら向こうの気が変わったのかもしれませんが、現状公式サポートは期待しない方がいいと思います。
2011/10/27 hawaii <happy.lov...@gmail.com>:
> 述語の宣言は、HappyMarriage [he, he': Man, she, she': Woman] となっているのに
> 次のコマンドを実行すると、男と男が結婚したり、結婚後、性別が変わったりするのです。
>
> run {
> some m, m', w, w': Person | HappyMarriage [m, m', w, w']
> } for 4 Person, exactly 3 String
中の制約を
some m, m': Man, w, w': Woman | HappyMarriage [m, m', w, w']
とすれば、この現象は起こらなくなります。
> 本を見返してみると、この現象について次の説明がありました。
> p.267 B.7.6 コマンド
> 述語や関数の宣言制約は述語や関数を直接 run するときにだけ用いられ、他の述語や関数から呼び出されるときには無視されることに注意が必要です。
はい。必要であれば、B.6.3, B.6.4なども参照してください。
--
IMAI Takeo <takeo...@gmail.com>