게시판 인덱스

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

사용자로부터 값을 입력받는 방법

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



가입: 2009년 9월 26일
올린 글: 50

올리기올려짐: 2009년10월5일 13:25    주제: 사용자로부터 값을 입력받는 방법 인용과 함께 답변

OCaml에서 사용자 input은 어떻게 처리할 수 있나요?

이것저것 열심히 들여다보니, scanf가 유력해보이는데..
scanf 종류도 굉장히 많더라고요.
어떻게 사용하는 것인지도 전혀 감이 오질 않아서
조교님께 도움을 청합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
허기홍



가입: 2007년 9월 27일
올린 글: 231

올리기올려짐: 2009년10월5일 14:20    주제: 인용과 함께 답변

숙제에는 모든 입력은 int라고 되어있습니다.

코드:
read_int : unit -> int


를 써보세요.

참고로 저런 기본 함수들은
pervasives 모듈에 정의되어 있습니다.

pervasives 모듈은 다른 모듈과 달리 모듈명.값 이라고 적을 필요없이 값만 쓰시면 됩니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
노건일



가입: 2009년 9월 26일
올린 글: 50

올리기올려짐: 2009년10월5일 21:17    주제: 인용과 함께 답변

매번 감사합니다 조교님 Smile
그래도 아직 넘어야할 산들이 너무 많은것 같네요 -_-;;

let f(x) = match x with
A -> a
| B -> b

와 같은 식으로 코딩을 했는데,
A와 B 조건을 각각 OCaml 실행기로 실행해보면 잘 돌아갑니다.
(즉, match x with
. A -> a 만 돌리고, 또 B만 돌려보고~)
그런데 A와 B를 한꺼번에(위와 같이) 써놓고 돌리면
match에 잘못된 type이 들어갔다는 에러가 나오네요...
뭐가 문제일까요? 진짜 몇시간째 고민하고 있습니다ㅠ

------------- 아래는 제 코드와 에러메시지 입니다.-------------
let rec expval (mem, env, expr) = (* expval : mem * env * expression -> value * mem * env *)
match expr with
ADD(e1, e2) -> match expval(mem, env, e1) with
(val1, mem1, env1) -> match expval(mem1, env1, e2) with
(val2, mem2, env2) -> ((Num (value_int val1 + value_int val2)), mem2, env2)
| SUB(e1, e2) -> match expval(mem, env, e1) with
(val1, mem1, env1) -> match expval(mem1, env1, e2) with
(val2, mem2, env2) -> ((Num (value_int val1 - value_int val2)), mem2, env2)


---------------
Characters 529-540:
| (ADD(e1, e2) : exp) -> match expval(mem, env, e1) with
^^^^^^^^^^^
Error: This pattern matches values of type exp
but is here used to match values of type 'a * 'b * 'c
위로
사용자 정보 보기 비밀 메시지 보내기
허기홍



가입: 2007년 9월 27일
올린 글: 231

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

아.. 이런

중첩된 매치를 쓰셔서 ocaml 컴파일러가 헷갈려하네요.
괄호를 써서 구분해주세요.

코드:

let rec expval (mem, env, expr) = (* expval : mem * env * expression -> value * mem * env *)
match expr with
ADD(e1, e2) ->
  (
    match expval(mem, env, e1) with
    (val1, mem1, env1) -> match expval(mem1, env1, e2) with
    | (val2, mem2, env2) -> ((Num (value_int val1 + value_int val2)), mem2, env2)
   )
| SUB(e1, e2) ->
   (
    match expval(mem, env, e1) with
    (val1, mem1, env1) -> match expval(mem1, env1, e2) with
    | (val2, mem2, env2) -> ((Num (value_int val1 - value_int val2)), mem2, env2)
   )

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

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


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