이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김진현
가입: 2005년 9월 20일 올린 글: 91 위치: SNUCSE OPT. lab.
|
올려짐: 2005년11월17일 14:41 주제: 곱하고 나누고 싶어요 |
|
|
M 을 가지고요.
추가 계획, 없으신지요? _________________ The kingdom of heaven has been forcefully advancing, and forceful men lay hold of it. |
|
위로 |
|
|
서성현
가입: 2005년 9월 29일 올린 글: 54
|
올려짐: 2005년11월17일 23:54 주제: Re: 그것보다 더 큰 문제는.. |
|
|
< (less) 연산도 없네요.
less 연산만 있다면 곱하기, 나누기를 어떻게든 구현할 수 있겠지만
less 연산은 구현하기가 좀 힘드네요..
아래와 같은 코드를 작성해 보았더니,
코드: | (* constants *)
let
val MAX_INT = 1073741823
in
(* less : (n1, n2) -> (n1 < n2) *)
let
val less = fn p =>
let
rec ls = fn p =>
if p.1 = MAX_INT then
false
else if p.2 = MAX_INT then
true
else
ls (p.1 + 1, p.2 + 1)
in
if p.1 = p.2 then false else ls p
end
in
write less (0, 1)
end end |
한참 돌더니 이렇게 되네요.
코드: | <neoseo@bacardi examples> ../run lib.m
== Running with Vanilla M ==
Uncaught exception: Stack overflow
<neoseo@bacardi examples> |
의미상으로는 맞는 코드이지만
stack overflow가 나버리니..
recursive call하는 부분을 반복문으로 고쳐서
stack overflow를 피할 수 있다면 좋겠지만
M에서는 while, for 같은 반복문을 지원하지 않는군요.
아직은 M이 좀 불편하네요.. _________________ http://snupl.wo.to |
|
위로 |
|
|
김덕환
가입: 2005년 8월 29일 올린 글: 190
|
올려짐: 2005년11월18일 10:37 주제: 이번 숙제에서는 정의를 그대로 유지합니다 |
|
|
다음 숙제에서 해당 연산자들을 추가하시도록 건의드려보겠습니다. 바로 추가하는 것도 어렵지는 않습니다만, 두 분과는 달리 정의가 바뀌는 것을 싫어하시는 분들도 계시니까요. (투표해볼까요? )
이번 숙제의 핵심은 타입 시스템의 고안과 구현에 있기 때문에 교수님께 언어 자체는 간소화시키신 듯합니다. 숙제는 교육이 최우선이라 실용적인 관점에서 보면 부족한 점이 있을 수 있습니다. 일주일 기간의 숙제로 완전한 nML 실행기와 타입 검사기 만들기 등을 낼 수는 없겠지요?
M으로 뭔가 재미있는 것을 해보려는데 M이 발목을 잡는다면, 숙제 제출은 정의에 따라 만들고 개인적으로 M의 확장판인 M'을 만드는 건 어떨까요? |
|
위로 |
|
|
|