게시판 인덱스

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

[hw 7-2] 문법 질문

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



가입: 2024년 3월 20일
올린 글: 4

올리기올려짐: 2024년5월25일 1:23    주제: [hw 7-2] 문법 질문 인용과 함께 답변

안녕하세요, 과제 7-2에서
코드:
(* Public testcase 7 : Toy with 'raise' function *)

(
  (fn error =>
    (fn x =>
      ifp x then
      error 1
      else
      error 2
    ) 5
  ) (fn x => raise x)
) handle a a

(* Output : 1 *)
다음과 같은 예제에서 raise x를 x로 변환하여 아래와 같이 나타낼 수 있습니다.
코드:
(
  (fn error =>
    (fn x =>
      ifp x then
      error 1
      else
      error 2
    ) 5
  ) (fn x => x)
) handle a a

(* Output : 1 *)
이 경우 exep Interpreter에서 TypeError("not a function")가 발생합니다. parser를 완벽히 뜯어보지 않아서 정확히는 모르겠으나 아래와 같이 바꾸면 잘 실행됩니다.
코드:
(
  (fn error =>
    (fn x =>
      ifp x then
      (error 1)
      else
      (error 2)
    ) 5
  ) (fn x => x)
) handle a a

(* Output : 1 *)
제 코드의 경우 fn x => raise x에 대해 error 1의 경우 TypeError가 발생하나 (error 1)의 경우 잘 작동합니다. Interpreter가 잘 작동하는 경우에도 TypeError가 발생하여도 되는지, 모호한 문법이 들어오지 않는지, 왜 이런 문제가 생기는지 알고 싶습니다.

추가적으로 function과 recursive function의 경우 expression을 인자로 가짐에도 상수로 취급하여도 되는지에 대해서도 질문드립니다.

감사합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이재호
Site Admin


가입: 2022년 3월 6일
올린 글: 209

올리기올려짐: 2024년5월25일 22:00    주제: 인용과 함께 답변

안녕하세요,

말씀주신 대로 함수에 인자를 적용할 때는 (현재 파서 구현에서는) `(error 1)`과 같이 괄호를 붙여주어야 저희가 평소에 쓰는 언어에서처럼 파싱이 됩니다.
지금은 (아쉽게도)
코드:
((fn error => (fn x => (ifp x then
 (error) (1)
else
 error) (2)) (5)) (fn x => raise (x))) handle a (a)

처럼 파싱이 되는 상태이고, 그렇기 때문에 `error`가 `raise`를 할 때만 잘 작동했던 것입니다.

다만 여러분이 구현을 하실 때는 이미 파싱된 문법 나무를 받아와 작성하시기 때문에 논리 상 문제는 없고, 테스트할 때도 정해진 테스트 코드에 대해 확인하므로 모호한 부분은 없습니다.

작성하신 코드의 파싱이 어떻게 되는지 확인하고 싶으시면 빌드된 실행 파일에 `-pp` 옵션을 붙여서 확인해보면 됩니다.

두 번째 질문 "추가적으로 function과 recursive function의 경우 expression을 인자로 가짐에도 상수로 취급하여도 되는지에 대해서도 질문드립니다."은 잘 이해하지 못하였습니다. expression을 인자로 가진다는 것이 어떤 의미이신가요? 그리고 상수로 취급하신다는 것이 어떤 말씀이신가요?

감사합니다.

조교 드림


TA 이재호
e-mail: jhlee@ropas.snu.ac.kr
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2024) 시간대: GMT + 9 시간(한국)
페이지 11

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


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