2014-01-01から1年間の記事一覧

Alloyの seq キーワードの使いどころと注意点

前回扱った仕様の完全版を記述してみます。 <仕様> 何枚かの"くちばし" があります。くちばしには、金、銀、黄色、の三種の色分けがあります。 金のくちばし1つにつき、缶詰め1つと交換できます。 銀のくちばし5つにつき、缶詰め1つと交換できます。 これ…

Alloyで、rubyのArray#select() みたいな定義を書く

ruby のユーザーにとって、Array#select() などの、「ブロック」の概念を化通用したメソッドは強力に便利です。 こんなふうに。 arr = "second baseman", "third baseman", "first baseman", "shortstop" # => ["second baseman", "third baseman", "first b…

【訂正】Alloy Analyzer で、あの格言をモデリングする その3〜石の上にも三年って、具体的に何年から何年まで?〜

前回のモデリング、を何度もいじくり回しているうちに、間違いが2点見つかったので、まず訂正します。 一つ目は、MinInterval。 当年と座り始めた年との間には、最低3目盛り、距離でいうと、4離れていないといけない という理由で、 one sig MinInterval { v…

Alloy Analyzer で、あの格言をモデリングする その2〜石の上に何年いればいいのか?〜

前回あつかった「石の上にも三年」のモデリングを再度試みます。 前回まで、 「Alloy で発見されたモデルインスタンスは、つまりそのまま(Happy pathの)テストデータとして 使えるんじゃないか、つまり、Alloy はテストデータ生成器として転用できるんじゃ…

Alloy Analyzer で、あの格言をモデリングする

“石の上にも三年” という格言を Alloy でモデリングします。まあ、格言は実はどうでもよくて、Alloyにおける、数値(Integer)の扱いについて確認したかったんです。Alloy 教科書 の131ページには 整数の演算が必要に思えるなら、考え直したほうがいい。 よ…

Alloy Analyzer でOrphan Removal(を、もういちど。)

前回、写真共有サービスを想定して、@OneToMany(orphanRemoval=true) な エンティティ群を定義してみました。その書き直し版です。前回は、「状態をあらわすsig」を、書くと言っておきながら、 操作対象のインスタンス(=削除するUserとPhoto)のことだけを…