게시판 인덱스

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

숙제 3의 OCaml 점수

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2009)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
공순호



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

올리기올려짐: 2009년4월20일 17:51    주제: 숙제 3의 OCaml 점수 인용과 함께 답변

* 숙제 3 점수
http://ropas.snu.ac.kr/~ta/4541.664A/09/score/hw3.score.txt

-----

테스트 케이스들을 돌려보고, 코드 길이가 길지 않아서 코드들을 일일이 읽으며 채점했습니다.

2명의 수강생에 대해서 CPO의 element에 대해서 order 를 이용하지 않고

OCaml의 '=' 연산자를 직접 이용하여 비교하는 코드가 있었습니다.

이는 옳지 않습니다. 그 이유는 function에 대해서 OCaml이 '=' 연산을 지원하지 않기 때문입니다.

예를 들어서 다음과 같이 type t가 함수인 CPO를 작성하고

코드:

(* CPO Construction *)
module FunctionCPO : CPO =
struct
  type t = sign -> sign
  let order (f1, f2) =
    let order_sign (s1, s2) = match (s1, s2) with
   (BOT, _) -> true
      | (ZERO, ZERO) -> true
      | (PLUS, PLUS) -> true
      | (MINUS, MINUS) -> true
      | _ -> false
    in
      List.for_all (fun x -> order_sign (f1 x, f2 x)) domain
   
  let lub (f1, f2) =
    if order (f1, f2) then f2 else
      if order (f2, f1) then f1 else
   raise (Error "No LUB.")
  let bottom = fun (x: sign) -> BOT
end


CPO -> CPO인 간단한 함수 id를 생각하면
코드:

let id f = f


order를 이용하지 않고 '=' 연산자를 이용한 fixpoint 구현은 다음과 같은 예외를 발생하며 fixpoint 계산에 실패하게 됩니다.

코드:

Fatal error: exception Invalid_argument("equal: functional value")


이러한 이유로 3점 감점하였습니다.
_________________
- soon@ropas
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2009) 시간대: GMT + 9 시간(한국)
페이지 11

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


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