게시판 인덱스

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

[과제 1] 4번 문제의 함수가 받는 인자의 형태에 관한 질문

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



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

올리기올려짐: 2024년3월12일 20:30    주제: [과제 1] 4번 문제의 함수가 받는 인자의 형태에 관한 질문 인용과 함께 답변

4번 문제에서
crazy3val ZERO(ONE(MTWO NIL)) 를 입력할 때와
crazy3val (ZERO(ONE(MTWO NIL))) 를 입력할 때 결과에 차이가 나는 이유가 궁금합니다.
전자의 경우 argument의 수가 맞지 않다는 error가 발생하고 후자의 경우 예상한 답이 잘 나옵니다.

제가 생각하기에는 전자는 ZERO라는 인자와 (ONE(MTWO NIL))이라는 인자 두개를 받는 crazy3 -> crazy3 -> int 형이고 후자는 crazy3 -> int 형인 것 같습니다.


let num = ZERO(ONE(MTWO NIL));;
crazy3val num;;
을 입력하면 정상적으로 출력이 잘 됩니다.


혹시 채점 시에 입력이 어떤 꼴로 주어지는지 궁금합니다. 과제의 서술 상으로는 전자의 꼴로 받는 함수를 짜야 할 것 같은데 또 제시한 함수의 타입은 후자의 꼴이라 헷갈리는 마음에 질문 드립니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이재호
Site Admin


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

올리기올려짐: 2024년3월12일 23:50    주제: 인용과 함께 답변

질문에 대해서 답변 및 부연 설명 드립니다.

1.
코드:
crazy3val ZERO(ONE(MTWO NIL))
코드:
crazy3val (ZERO(ONE(MTWO NIL)))
의 차이:
이해하신 것이 맞습니다.
부연하자면, OCaml (및 일반적인 설정에서) 함수의 사용은 왼쪽 방향성(left associative)을 가집니다. 따라서, 첫 식은
코드:
((crazy3val ZERO)(ONE(MTWO NIL)))
와 같은 식이며, 두 번째 식은
코드:
(crazy3val (ZERO(ONE(MTWO NIL))))
와 같습니다.
그렇기에, 튜토리얼에서 지나가듯 언급하였지만
코드:
crazy3val ZERO(ONE(MTWO NIL))
이 아니라
코드:
crazy3val ZERO (ONE (MTWO NIL))
와 같이 인자들을 띄어쓰기로 구분해 작성하시는 습관을 들이는 것을 추천드립니다.
공지하였듯이 ocamlformat을 사용하면 자동으로 해당 방식으로 코드가 정돈될 것입니다.

2. `let num = ...`이 되는 것은 1로 답변이 되었으리라 생각합니다. 참고로, 튜토리얼에서 말씀드렸지만 `;;`은 utop과 같은 상호작용 실행기에서만 사용하는 문법이니 .ml 파일에서는 사용하실 필요가 없습니다.

3. "혹시 채점 시에..." -> 질문을 읽어보니 앞서 1에서 설명드린 개념을 혼동하신 것 같습니다. 과제에 주어진 타입대로 문제를 푸시면 됩니다.

추가적으로 궁금하신 내용 있으면 자유롭게 질문주세요!
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 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