 |
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
박종한
가입: 2021년 3월 16일 올린 글: 3
|
올려짐: 2023년3월17일 15:58 주제: [HW2] ex4 질문입니다. |
|
|
tree type matching 중에 질문이 생겨서 글 올립니다.
test.ml 파일에 다음과 같이 커스텀 타입을 정의하고 저장했을 때,
type tree = LEAF of item
| NODE of tree list
ocaml -init test.ml
# let x = NODE [];; 를 실행하면
val x : tree = NODE [] 를 정상적으로 출력합니다.
ocaml 이 자동으로 type matching 해서 'a list 타입인 [] 를 tree list 타입으로 인식했다고 이해하면 될까요?
또, 수업시간에 다룬 귀납적으로 정의되는 set 와 fixed point 들에 관한 논의와 연관지어서 생각해 보면 NODE [] 는 우리가 문제 조건에 따라서 construct 하고자 하는 집합과는 무관한 ocaml list 모듈의 'side-effect' 라고도 주장할 수 있을 것 같습니다.
이를 해결하기 위해서 type 정의 시에 tree list 가 non-empty 하다는 것을 명시할 수 있는 방법을 찾아봤는데, non_empty_list library 는 ocaml 버젼 문제로 사용할 수 없는 것 같습니다. 혹시 다른 좋은 구현 방법이 있을지에 대한 조교님의 생각이 궁금합니다.
긴 질문 읽어주셔서 감사합니다.
박종한 올림. |
|
| 위로 |
|
 |
김도형
가입: 2022년 3월 8일 올린 글: 103
|
올려짐: 2023년3월17일 16:48 주제: |
|
|
안녕하세요.
일단 []는 'a list type으로, 'a에는 어떤 타입이든 올 수 있습니다.
ocaml은 type check를 하는 과정에서 이 타입이 올바르게 추론될 수 있도록 'a에 타입을 대입합니다.
NODE [] 라는 값을 받았을 때, ocaml은 이것이 NODE 타입이라는 것을 알고, 이것이 tree list를 가진다는 것을 알고 있습니다.
따라서 이 때 []는 자연스럽게 tree를 원소로 갖는 리스트로 추론됩니다.
또한, 이번 과제에서는 빈 노드가 있는 상황을 전제하지 않습니다.
이에 대해선 신경 쓰지 않으셔도 됩니다.
감사합니다. |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|