0

私はこの正式な方法の宿題の問題で立ち往生しており、何が正しくないのかわかりません。

次のように定義されている Item と ToDo の 2 つの署名があります。

sig Item {
    due : Date lone -> Step,
    category : Category lone -> Step
}

one sig ToDo {
    list : (seq Item) -> Step,
    current : Item lone -> Step,
    completed : Item -> Step
}

指定された日付とカテゴリの項目を ToDo のリスト セットに挿入する関数を定義する必要があります。秘訣は、リスト セットがアイテムの期日順に並べられることになっていることです。ステップと日付の両方に順序があります。

私の質問は次のとおりです。ToDo.list 内のアイテムのセットを特定の日付で取得するにはどうすればよいですか? 私は機能を持っています:

fun tasksWithDate[d : Date, st : Step, t : set Item]: set Item

そして、次のコード(およびそのバリエーション)を使用してアイテムのセットを取得しようとしました:

t.due.st.d

t.due.st が一連の日付を残すため、これは機能しません。その理由は理解できます。しかし、その時点からの他の試みは私をそこに連れて行きません。括弧を使用して、t に到達する前に「due.st」と「d」の間の結合を評価しようとしましたが、それは機能せず、角括弧を使用して順序を変更しようとしましたが、動作しません。ここで何か間違ったことをしていることは知っていますが、何が原因なのかわかりません。

4

1 に答える 1

1

私が思いついた解決策は次のとおりです。

let r = t -> t.due.st {
    r.d
}

これが行っているのは、t の期日に対する t の一連の関係を作成することです。次に、目的の日付で結合を実行し、その日付のすべての t を返します。

于 2010-11-01T06:57:41.333 に答える