|
|
이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
고태건
가입: 2018년 9월 14일 올린 글: 1
|
올려짐: 2018년9월14일 16:25 주제: 과제 1-2 질문입니다. |
|
|
과제 1-2 test case에서 함수를 정의할때
let matrix (i,j) = ~~~~~ in 을 사용하는데
뒤에 in의 의미를 잘 모르겠습니다.
in을 그대로 둔 상태에서 ocaml 1-2.ml을 통해 실행하면 syntax 에러가 납니다.
in을 지우면 잘 되는데 in을 넣었을때 꼭 되어야하는지, 왜 넣는 것인지 궁금합니다.
환경은 개인맥북 terminal 이용하고 있습니다. |
|
위로 |
|
|
배요한 Site Admin
가입: 2018년 3월 6일 올린 글: 107
|
올려짐: 2018년9월14일 17:01 주제: |
|
|
안녕하세요, 고태건 학생.
1. let x = ~ in의 in은 변수의 유효범위(scope)를 의미합니다.
예를 들어, let x = 3 in A 라고 하면
1) x는 3이라는 값으로 정의한다.
2) x는 오로지 A라는 범위에서만 유효하다.
라는 뜻입니다.
2.
코드: | let matrix (i, j) = ((float_of_int i) *. 10.) +. (float_of_int j) in
sumprod (matrix, 2, 7) |
위 코드를 .ml파일에 넣고 컴파일 하면 'in'에서 syntax error가 난다는 의미죠?
matrix (i,j)는 함수타입인데 sumprod (matrix,2,7)에서 나오는 float값과 바인딩 될려고 해서 생긴 문제입니다.
matrix는 함수이고, sumprod (matrix,2,7)에서 나오는 값을 어떤 변수(여기서는 result)에 바인딩 시킬려면 다음과 같이 하시면 됩니다.
코드: |
let result =
let matrix (i, j) = (float_of_int i) *. 10. +. (float_of_int j) in
sumprod (matrix, 1, 1) |
앞서 태건 학생이 말한것 처럼 'in'을 포함하지 않고 다음과 같이 matrix을 정의하게 된다면 matrix는 함수라고 잘 정의 되었기 때문에 syntax error라고 뜨지 않습니다.
코드: | let matrix (i, j) = (float_of_int i) *. 10. +. (float_of_int j) |
감사합니다.
TA 이동권
e-mail: dklee@ropas.snu.ac.kr
TA 배요한
e-mail: yhbae@ropas.snu.ac.kr |
|
위로 |
|
|
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|