이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김찬민
가입: 2010년 9월 6일 올린 글: 81
|
올려짐: 2014년12월3일 16:49 주제: 숙제 7: 주어진 뼈대코드에서 체크 결과로 리턴해야 하는 타입이 부족합니다. |
|
|
아직 결정되지 않거나 polymorphic한 타입들에 대해 나타내어줄 타입이 뼈대코드에 없습니다. 그래서 다음과 같은 코드에 대해서는 체크가 성공적으로 되었지만 리턴할 값이 없습니다.
let rec f = fn x => f x in f 1234 end
let rec f = fn x => f x in f end
fn x => x
fn x => 1
let val f = fn x => x in fn x => f end
등
OCaml에서는 아직 결정되지 않은 타입은 '_a로 나타내고 폴리모픽 타입은 'a 등으로 나타내던데 이러한 것을 나타낼만한 것들이 혹시 뼈대코드에 추가될 예정인가요?
그 외에도 다음과 같은 경우에는 임의의 타입이 허용 가능한 것이 아니라 일부 타입만 허용합니다.
fn x => x = x
fn x => write (x)
이런 경우도 다 출력할 방법이 제공 되는가요? |
|
위로 |
|
|
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2014년12월4일 12:01 주제: |
|
|
최종타입은 뼈대코드에 나와있는 타입 하에서 출력해주세요. |
|
위로 |
|
|
김찬민
가입: 2010년 9월 6일 올린 글: 81
|
올려짐: 2014년12월4일 12:21 주제: |
|
|
저 예제들은 뼈대코드에 나와있는 타입 하에서 출력하는 것이 불가능해 보입니다.
가능한가요? |
|
위로 |
|
|
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2014년12월4일 12:24 주제: |
|
|
최종타입하에 출력할수 없다면 타입체킹 실패로 결론내시면 됩니다. |
|
위로 |
|
|
김찬민
가입: 2010년 9월 6일 올린 글: 81
|
올려짐: 2014년12월4일 12:25 주제: |
|
|
감사합니다. |
|
위로 |
|
|
유경인
가입: 2013년 9월 9일 올린 글: 29
|
올려짐: 2014년12월4일 18:50 주제: |
|
|
fn x => x : 7-1, 7-2 모두 TypeError
let val f = fn x => x in f 1 end : 7-1, 7-2 모두 Int
let val f = fn x => x in f 1; f true end : 7-1은 TypeError, 7-2는 Bool
정리하면 이렇게 되는건가요? |
|
위로 |
|
|
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2014년12월5일 11:32 주제: |
|
|
네 맞습니다. |
|
위로 |
|
|
방정호
가입: 2011년 9월 19일 올린 글: 40
|
올려짐: 2014년12월5일 18:49 주제: |
|
|
유경인 씀: | fn x => x : 7-1, 7-2 모두 TypeError
let val f = fn x => x in f 1 end : 7-1, 7-2 모두 Int
let val f = fn x => x in f 1; f true end : 7-1은 TypeError, 7-2는 Bool
정리하면 이렇게 되는건가요? |
let val f = fn x => x in 1 end
이것은 어떻게 처리를 해야 하나요?
전체 프로그램의 타입은 int인데,
중간에 f의 타입은 결정을 못한다면요. |
|
위로 |
|
|
강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2014년12월7일 19:52 주제: |
|
|
sound한 타입시스템의 정의에 맞도록 처리하시면 됩니다.
실제 실행시 중도에 에러로 멈추는 경우는 무조건 잡아주는것이 sound한 타입시스템입니다.
이런 조건하에 최대한 정확할수록 좋으므로 int를 내줄 수 있다면 좋겠지요. |
|
위로 |
|
|
|