| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
송수현
가입: 2006년 9월 4일 올린 글: 25
|
올려짐: 2006년9월16일 17:17 주제: 몇가지 생소한 점에 대한 질문입니다. |
|
|
질문1 :
함수에서 리턴값을 보내지 않으려고 할 때는 어떤 방법을 써야 하나요..
| 코드: | ex) fun one(1) = "OK"
| one(_) = NULL |
위의 NULL 대신 무언가 적절한 것을 넣어서 아무것도 안보내게 할 수는 없는지?
Ex3을 하던 중 백의자리에 "백" 등을 보낼땐 상관없지만 일의자리에 "일"을 보내면 안되기 때문에...(우선은 리스트화로 해결해놓았습니다만..) 좋은 방법이 없는지 궁금합니다.
질문2 :
type로 정의한 것들 중 여러겹으로 쓰이는 것들(crazy2도 마찬가지..)을 한꺼풀 벗기는 좋은 방법은 없는지요?
| 코드: | ex) type a = A | B of a | C of a
val v = B(C(B A)) |
일 때
B(v2) = v 등으로 벗길 수는 있지만.. C(v2) = v 등을 쓰지 않으면 경고가 발생하는 점도 있고 하여,
1. 이렇게 한꺼풀씩 벗기는 것 말고 A에 도달할 수 있는 방법이 있는지
2. 1을 응용하여 중간의 어느 지점에 한번에 도달할 수 있는지
3. 마찬가지로 v가 몇겹인지 한번에 알 수 있는지
등이 궁금합니다.
새로운 것에 적응한다는게 좀 힘드네요 -_-; |
|
| 위로 |
|
 |
박대준
가입: 2005년 10월 7일 올린 글: 245
|
올려짐: 2006년9월18일 12:58 주제: Re: 몇가지 생소한 점에 대한 질문입니다. |
|
|
| 송수현 씀: | 함수에서 리턴값을 보내지 않으려고 할 때는 어떤 방법을 써야 하나요..
|
함수형 언어에서 "함수"란 입력에 따른 결과를 리턴하는 물건입니다.
따라서 리턴값이 없는 함수는 존재할 수 없습니다.
| 송수현 씀: | | 코드: | ex) fun one(1) = "OK"
| one(_) = NULL |
위의 NULL 대신 무언가 적절한 것을 넣어서 아무것도 안보내게 할 수는 없는지?
Ex3을 하던 중 백의자리에 "백" 등을 보낼땐 상관없지만 일의자리에 "일"을 보내면 안되기 때문에...(우선은 리스트화로 해결해놓았습니다만..) 좋은 방법이 없는지 궁금합니다.
|
따라서, 위와 같은 효과를 얻기 위해서는 그러한 함수의 결과값을 재처리해주는 루틴이 필요합니다.
| 송수현 씀: | type로 정의한 것들 중 여러겹으로 쓰이는 것들(crazy2도 마찬가지..)을 한꺼풀 벗기는 좋은 방법은 없는지요?
| 코드: | ex) type a = A | B of a | C of a
val v = B(C(B A)) |
일 때
B(v2) = v 등으로 벗길 수는 있지만.. C(v2) = v 등을 쓰지 않으면 경고가 발생하는 점도 있고 하여,
1. 이렇게 한꺼풀씩 벗기는 것 말고 A에 도달할 수 있는 방법이 있는지
2. 1을 응용하여 중간의 어느 지점에 한번에 도달할 수 있는지
3. 마찬가지로 v가 몇겹인지 한번에 알 수 있는지
등이 궁금합니다.
|
안타깝지만, 제가 알기론, 위와 같은 일을 쉽게 처리하는 기본 연산자가 없습니다.
패턴매칭 등을 이용해서 재귀적으로 하나씩 벗겨나가면서 일을 처리하도록 루틴을 구성하는 것이 가장 자연스러울 것이라 생각합니다.
| 송수현 씀: | | 새로운 것에 적응한다는게 좀 힘드네요 -_-; |
네, 함수형 언어에 익숙해지려면 시간이 좀 필요합니다만,
일단 익숙해지시면, 그 편리함과 자연스러움에 감탄하실 수 있을 것입니다. |
|
| 위로 |
|
 |
송수현
가입: 2006년 9월 4일 올린 글: 25
|
올려짐: 2006년9월18일 13:02 주제: |
|
|
즉, null type의 list는 존재하나([], nil 등) null type의 string나 int등은 없다는 말씀이군요.
감사합니다. |
|
| 위로 |
|
 |
|