0

我被困在这个正式的方法作业问题上,我不确定我做错了什么。

我有两个签名,Item 和 ToDo,它们的定义如下:

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.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

The solution that I came up with is the following:

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

What this is doing is creating a set of relations of t to the due date of t. It then performs a join with the desired date returning all t with that date.

于 2010-11-01T06:57:41.333 回答