게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

6-2(저지방M)에서 모르는 타입.(fn x => 1)

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2005)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
현경렬



가입: 2005년 9월 28일
올린 글: 19
위치: 스쿨

올리기올려짐: 2005년11월21일 23:47    주제: 6-2(저지방M)에서 모르는 타입.(fn x => 1) 인용과 함께 답변

fn x => 1
의 타입은 무엇인가요?

-- 결석 횟수가 많아서 죄송합니다.
_________________
Programming Rumble
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
최성록
손님





올리기올려짐: 2005년11월21일 23:55    주제: Re: 6-2(저지방M)에서 모르는 타입.(fn x => 1) 인용과 함께 답변

현경렬 씀:

fn x => 1
의 타입은 무엇인가요?


unknown type이 있는 경우 저는 에러가 나도록 하였습니다. 유사하게 아래와 같은 경우도 에러가 발생합니다. (이런 구현이 틀린 건가??)
폴리모픽한 타입이 불가능하도록 구현하였습니다. 타입 체커가 sound하면 될 것 같은데요...

코드:

let
  val plman = fn n => write n
in
  write "what is result??"
end


현경렬 씀:

-- 결석 횟수가 많아서 죄송합니다.


-- 취침 휫수가 많아서 죄송합니다.
[/code]
위로
현경렬



가입: 2005년 9월 28일
올린 글: 19
위치: 스쿨

올리기올려짐: 2005년11월21일 23:58    주제: Re: 6-2(저지방M)에서 모르는 타입.(fn x => 1) 인용과 함께 답변

최성록 씀:
unknown type이 있는 경우 저는 에러가 나도록 하였습니다. 유사하게 아래와 같은 경우도 에러가 발생합니다. (이런 구현이 틀린 건가??)
폴리모픽한 타입이 불가능하도록 구현하였습니다.


저는 이게 폴리모픽이라고는 생각하지 않습니다, (그나마 들었던)수업 시간에도 모노모픽이라고 한 것 같고, nML도 a' -> b' 같은 메시지를 보내는데 이것도 모노모픽이라고 한 것 같군요.(a' -> b' 라는 한 타입만 가능하므로)
_________________
Programming Rumble
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
공순호



가입: 2005년 9월 29일
올린 글: 363
위치: 302동 312-2호

올리기올려짐: 2005년11월22일 0:07    주제: 인용과 함께 답변

제 경우에는


코드:

let
  val plman = fn n => write n
in
  write "what is result??"
end


까지는 잘 돕니다만,

코드:

let
  val plman = fn n => write n
in
  plman "what is result??"
end


이런식으로 실질적으로 plman을 사용하는 경우에는 type check error가 뜨는군요.



함수가
코드:

  val plman = fn n => n


와 같은 경우에는 a' -> a' 처럼 간주될 수 있겠지만

코드:

  val plman = fn n => write n


의 경우에는

임의의 타입이 아닌 Int, Bool, String만 올 수 있게 되어서

함수 타입이 모노몰픽하다고 보기 어렵지 않나요?

ad-hoc polymorphism이라고 하는 것 같던데, 정확한지는 모르겠습니다.

궁금한 부분이고요.


equality와 write구현하느라고 googling만 2일 정도 한 것 같군요 ㅜㅜ




____________________________

그건 그렇고,

내일

컴구숙제+데통숙제+PL숙제+공수2 퀴즈를 보는 분들에게

무운이 가득하시기를!!
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
최성록
손님





올리기올려짐: 2005년11월22일 0:11    주제: 하하 인용과 함께 답변

공순호 씀:
내일

컴구숙제+데통숙제+PL숙제+공수2 퀴즈를 보는 분들에게

무운이 가득하시기를!!


컴구 + 데통 + PL 시간에 뵈요^^

근데 숙제 두 번째 타입이 다 맞다고 가정하고,

코드:
val (Pair (v1, v2), m') = eval (e, m, exp)


이런 식의 구문을 남발하다보니 warning이 심히 많이 발생하는군요.

다른 분들은 어떤식으로 다이어트 하셨는지요??
위로
공순호



가입: 2005년 9월 29일
올린 글: 363
위치: 302동 312-2호

올리기올려짐: 2005년11월22일 0:21    주제: 인용과 함께 답변

아 그러고보니

글 제목인 fn x => 1 을 빼먹었군요.

a' -> int 로 가는 타입인 것으로 처리했습니다.



저지방으로 가고 난 이후에는 저도 warning 천국이군요.;

type system으로 커버 되지 않는 runtime error가 있을 것 같아서(같아서?)

소극적으로 하나씩 빼나가고 있습니다.
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
현경렬



가입: 2005년 9월 28일
올린 글: 19
위치: 스쿨

올리기올려짐: 2005년11월22일 1:18    주제: Re: 하하 인용과 함께 답변

최성록 씀:


코드:
val (Pair (v1, v2), m') = eval (e, m, exp)


이런 식의 구문을 남발하다보니 warning이 심히 많이 발생하는군요.

다른 분들은 어떤식으로 다이어트 하셨는지요??


코드:
val v' = eval (e, m, exp)
   case v' of (Pair(v1, v2), m') => ...
          | _ => raise Error("이건 절대 나올 수가 없어!")

라고 하는게 나을 것 같습니다.
eval한 결과가 pair가 아닐 수도 있으니까요(확실해도, warning을 없애는 차원에서 ...)

(저는 저렇게 했습니다.)
_________________
Programming Rumble
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
정민재
손님





올리기올려짐: 2005년11월22일 23:47    주제: 인용과 함께 답변

a' -> a' 나 a' -> int 에서 a' 는 어떻게 표현할 수 있나요 ㅡ.ㅡ;;; Embarassed
위로
서성현



가입: 2005년 9월 29일
올린 글: 54

올리기올려짐: 2005년11월23일 0:02    주제: 표현 못합니다. 인용과 함께 답변

정민재 씀:
a' -> a' 나 a' -> int 에서 a' 는 어떻게 표현할 수 있나요 ㅡ.ㅡ;;; Embarassed

'a는 내부 계산에서는 쓰일 수 있겠지만
외부로 표현해야 하는 경우는 없습니다.
코드를 예로 드는 것이 이해하기 쉬울까요.
simple type system을 기준으로 설명할께요.

코드:
let
  val f = fn x => x
in
  7
end

위 프로그램의 타입은 int입니다.
f의 타입은 a1 -> a2이고요. a1, a2는 아직 알 수 없지요.

코드:
let
  val f = fn x => x
in
  f
end

위 프로그램의 타입은 'a -> 'a 가 아닙니다.
프로그램의 최종 계산 결과는 함수 타입이 될 수 없으므로,
타입 체커에서 오류를 뱉어내어야 합니다.

코드:
let
  val f = fn x => x
in
  f 7
end

위 프로그램의 타입은 int 입니다.
f의 타입은 (int)->(int)이고요. 왜냐하면 "f 7"이라는 명령문 때문에..

코드:
let
  val f = fn x => x
in
  f 7 ; f true
end

위 프로그램의 타입은 bool이 아닙니다.
f의 타입은 (int)->(int)이면서 동시에 (bool)->(bool)이어야 하는데
simple type system에서는 그런 경우를 허용하지 않으므로
타입 체커에서 오류를 뱉어내어야 합니다.

위의 예제들을 보면,
프로그램의 타입(굵은 글씨) 속에 'a가 들어가는 경우는 없지요?
따라서 'a를 표현해야 할 필요는 없습니다.
제가 질문 내용을 제대로 해석한 건지 모르겠네요. Rolling Eyes
_________________
http://snupl.wo.to
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2005) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay