다음 서명은 사진 관리 응용 프로그램의 상태를 설명합니다. 이 경우 ApplicationStates 집합을 만듭니다.화살표 식에 사용될 때 필드가 다른 이유는 무엇입니까?</p> <pre><code>sig ApplicationState { catalogs: set Catalog, catalogState: catalogs -> one CatalogState } </code></pre> <p>서명은 물론, 세트를 만듭니다
ApplicationState0
ApplicationState1
...
카탈로그는 필드입니다. 각 ApplicationState를 카탈로그 값 집합에 매핑합니다.
ApplicationState0, Catalog0
ApplicationState0, Catalog1
ApplicationState1, Catalog0
...
catalogState도 필드입니다. 각 ApplicationState를 관계로 맵핑합니다. 그 관계는 다음과 같습니다.
catalogs -> one CatalogState
그 관계는 다음과 같습니다. 각 카탈로그 값을 하나의 CatalogState 값으로 매핑합니다.
이ApplicationState0, Catalog0
ApplicationState0, Catalog1
ApplicationState1, Catalog0
...
그래서 관계가과 같이, 하나 CatalogState에 그 튜플의 각지도를 말한다 : 우리는 이미 내가 여기에 반복 것이다 카탈로그를 보았다
ApplicationState0, Catalog0, CatalogState0
ApplicationState0, Catalog1, CatalogState0
ApplicationState1, Catalog0, CatalogState0
...
좋아, 다시 catalogState합니다. 이전에 우리는 각 ApplicationState를 관계에 매핑하고 그 관계가 무엇인지 알았습니다. 나는 합금 평가자를 실행할 때, 그것은 catalogState는 삼항 관계라고 말한다
ApplicationState0, ApplicationState0, Catalog0, CatalogState0
ApplicationState0, ApplicationState0, Catalog1, CatalogState0
ApplicationState0, ApplicationState1, Catalog0, CatalogState0
...
을하지만 : 그래서, catalogState 그래서 같은 인수에 대응 = 4의 관계를, 의미 있다고 생각합니다. 이 예제의 테이크 어웨이는 다음과 같습니다.
일반적으로 필드 이름은 관계를 나타냅니다.
화살표 식에 사용 된 필드 이름은 관계를 나타내지 않습니다. 오히려 관계의 열 2 (관계의 범위)를 나타냅니다.
맞습니까? 소프트웨어 추상화 (Software Abstractions) 책에서이 부분은 어디에 설명되어 있습니까?
위대한 설명 - 마이클 감사합니다! –