Axioms on Types

Axioms on Types

$$ \begin{align} g(f(1, f(2, f(3, t)))) &= 1 \\ \text{where } t \in T \nonumber \\ g(f(1, f(2, f(3, t)))) &= 3 \\ \text{where } t \in T \nonumber \\ f(f(f(t, i, 1), i, 2), i, 3) &= f(t,i,3) \\ g(f(f(f(t, i, 1), j, 2), k, 3), i) &= 1 \nonumber \\ \text{where } t \in T \nonumber \end{align} $$

  • (1), (2), (3)에서 $T$는 제 각기 어떤 데이터 타입인가요?
  • (1), (2), (3)에서 함수 $g$와 $f$는 $T$의 어떤 연산에 대응하나요?
귀띔
  • 연산(Operation)을 중심으로 Data Type을 정의하고 이해하는 방식을 맛 보이려고 만든 수수께끼입니다.
공부 거리
  • J.Craig Cleaveland, An Introduction to Data Types, Addison-Wesley, Jan. 1987, pp 200~216
  • Barbara Liskov, Stephen Zilles, Programming with abstract data types, ACM SIGPLAN Notices, Volume 9, Issue 4, April 1974, pp 50~59, https://doi.org/10.1145/942572.807045
  • Ellis Horowitz and Sartaj Sahni, Fundamentals of Data Structures, 1976
마지막으로 고친 날