Управление деятельностью / регистром на основе модели
У меня есть задание, на котором я застрял. Я постараюсь дать точное резюме описания.
У клуба есть реестр, содержащий имена и описания каждого члена. Имя - строка, а описание - кортеж (no,yb,ths)
- no = номер телефона,
- yb = год рождения -ths = интересующие темы.
Расположение клуба задается предикатом, описывающим членов клуба, которые могут быть заинтересованы в этом устройстве. т.е. P1(no,yb,ths) истинно для описания (no,yb,ths).
Теперь цель состоит в том, чтобы создать реестр, скажем, трех членов, а затем группу.
Затем я должен создать функцию, которая дает список имен и телефонных номеров участников в регистре r, которые могут быть задействованы в расположении.
До сих пор я написал следующий код для создания структуры, однако я немного не уверен, где он кажется правильным или нет, а также в целом о том, как создать функцию извлечения, которая может быть видна из фрагмента кода, введенного ниже:
/// Club for employees
/// Register containing = names, and describtions. All names a unique.
/// The description is a tuple
/// (no,yb,ths) = no => Telefone number, yb = year of birth, ths is the themes of interests.
(*Exercise 1*)
type Name = string;;
type No = int;;
type Yb = int;;
type Ths = string;;
type Employee = (Name *(No*Yb*Ths)) list
type Arrangment = (No*Yb*Ths);;
(* Exercise 2*)
// Declaration of arrangement
// Declaration of register.
// Declaration of an arrangement p2.
let employee = [("John",(38804016,1982,["Soccer";"jazz"]));
("Rebecca",(20660416,1990,["Rugby";"Techno"]));
("Mogens",(93989832,1958,["Jazz";"Spa"]))];;
let p1 = [(1,1982,["Soccer";"Jazz")];;
let p2 = [(2,1990,"Soccer")];;
let rec findPersons p = function
|(p', adesc)::_ when p = p' -> adesc
|_::employee -> findPersons p
|_-> failwith(ac + " No matching acitivities")