이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
현철
가입: 2009년 10월 7일 올린 글: 27
|
올려짐: 2009년11월12일 21:51 주제: 6-1번 type checking에 대해서 |
|
|
6-1번도 엄밀하게 심플타입을 지키도록 런타임 에러를 잘 내주어야 하나요?
예를 들어
let a = malloc 1 in a := "1234" end
이런 프로그램도 걸러내야 하나요?
그렇다면
함수포인터 - 함수포인터 assign할 때
type checker가 필요한데..ㅠㅠ... 어떻게 해야 하나요 ㅠ
예를 들어 아래와 같은 프로그램입니다..
let val a = malloc fn x => x+1 in
(
a := fn x => x + 2;
write( (!a) ( 3 ) )
)
end |
|
위로 |
|
|
허기홍
가입: 2007년 9월 27일 올린 글: 231
|
올려짐: 2009년11월12일 22:14 주제: |
|
|
6-1은 그렇게 심각하게 고민하지 않으셔도 됩니다.
예전에 우리가 K-, K-- 언어 만들 때 처리했던 예외 정도 수준만 구현해주세요. |
|
위로 |
|
|
손님
|
올려짐: 2009년11월13일 5:57 주제: Re: 6-1번 type checking에 대해서 |
|
|
현철 씀: | 6-1번도 엄밀하게 심플타입을 지키도록 런타임 에러를 잘 내주어야 하나요?
예를 들어
let a = malloc 1 in a := "1234" end
이런 프로그램도 걸러내야 하나요? |
위의 프로그램은 잘 실행되는(의미정의대로) 프로그램입니다.
런타임 에러는
"실행의미가 없을 때"(의미정의가 안되는 때)
내는 것입니다.
실행전에 타입검사할 때 사용한
타입시스템이 안지켜져서 내는 게 아니고요.
현철 씀: |
그렇다면
함수포인터 - 함수포인터 assign할 때
type checker가 필요한데..ㅠㅠ... 어떻게 해야 하나요 ㅠ
예를 들어 아래와 같은 프로그램입니다..
let val a = malloc fn x => x+1 in
(
a := fn x => x + 2;
write( (!a) ( 3 ) )
)
end |
위의 프로그램은
static simple type checker로도 받아들여지는 프로그램입니다.
-K |
|
위로 |
|
|
현철
가입: 2009년 10월 7일 올린 글: 27
|
올려짐: 2009년11월13일 9:40 주제: 아하 |
|
|
그럼 런타임 타입체킹 시스템은 사실상 폴리몰픽타입시스템같은 것도 다 잘 지원되는 것을 말하는 것이군요! |
|
위로 |
|
|
허기홍
가입: 2007년 9월 27일 올린 글: 231
|
올려짐: 2009년11월13일 15:26 주제: |
|
|
런 타임 타입 체킹 시스템은 사실상 폴리몰픽타입시스템같은 것도 다 잘 지원되는 것
이 무슨 뜻인가요?
폴리몰픽/단순 타입 시스템을 통과하는 프로그램은 런타임 타입 체킹 시스템 위에서 돌려도 잘 돌아갑니다.
반대는 성립하지 않습니다.
정적 타입시스템은 안전하지만 완전하지 않으므로. |
|
위로 |
|
|
현철
가입: 2009년 10월 7일 올린 글: 27
|
올려짐: 2009년11월13일 15:56 주제: 네 |
|
|
제 말도 같은 말이예요..
런타임 타입시스템에서 돌아가는 프로그램이 반드시 심플타입에서 돌아갈 필요가 없다는 말을 하고 싶었던 겁니다.
저는 처음에 심플타입 체킹을 런타임에 하는 프로그램이 바닐라라고 생각했었거든요;; |
|
위로 |
|
|
|