이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
|
위로 |
|
|
강지훈
가입: 2008년 9월 2일 올린 글: 291 위치: 302동 312-2호
|
올려짐: 2009년5월9일 5:05 주제: FUNCTION_DOMAIN.map의 type |
|
|
89
90 module type FUNCTION_DOMAIN = sig
91 include DOMAIN
92 type lelt
93 type relt
94 val image: elt -> lelt -> relt
95 val update: elt -> lelt -> relt -> elt
96 val map: (lelt -> relt -> lelt -> relt) -> elt -> elt
97 val fold: (lelt -> relt -> 'a -> 'a) -> elt -> 'a -> 'a
98 val make: (lelt * relt) list -> elt
99 end
에서 type이 (lelt -> relt -> lelt -> relt) -> elt -> elt
인데요,, (lelt -> relt -> relt) -> elt -> elt 정도가 적당하지 않을까요?
아니면 map의 의미를 조금만 더 설명해 주셨으면 좋겠습니다 ^^
--
그리고
75
76 module type POWERSET_DOMAIN = sig
77 include DOMAIN
78 type atom
79 val union: elt -> elt -> elt
80 val inter: elt -> elt -> elt
81 val minus: elt -> elt -> elt
82 val diff: elt -> elt -> elt
83 val remove: atom -> elt -> elt
84 val mem: atom -> elt -> bool
85 val map: (atom -> atom) -> elt -> elt
86 val fold: (atom -> 'a -> 'a) -> elt -> 'a -> 'a
87 val make: atom list -> elt
88 end
89
에서
val minus: elt -> elt -> elt
val diff: elt -> elt -> elt
가 있는데요, 둘은 같은 의미인가요? _________________ 강지훈
프로그래밍의 원리 조교
Jeehoon Kang
TA, Principles of Programming |
|
위로 |
|
|
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2009년5월9일 9:10 주제: |
|
|
1. FUNCTION_DOMAIN에서 fold의 의미
http://caml.inria.fr/pub/docs/manual-ocaml/libref/Map.Make.html
의 fold의 의미와 동일한 것입니다.
인용해드리면
인용: |
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
fold f m a computes (f kN dN ... (f k1 d1 a)...), where k1 ... kN are the keys of all bindings in m (in increasing order), and d1 ... dN are the associated data.
|
물론, 숙제에서는 Map이 Elt로 한번 감싸져있기 때문에 조금 다른 부분이 있습니다.
하지만, 이해하는데에는 어려움이 없을 것으로 생각합니다.
2. Powetset에서의 minus와 diff의 의미
교수님께 여쭤보고 답드리겠습니다. _________________ - soon@ropas |
|
위로 |
|
|
이광근
가입: 2005년 8월 29일 올린 글: 68
|
올려짐: 2009년5월9일 12:48 주제: |
|
|
공순호 씀: | 1. FUNCTION_DOMAIN에서 fold의 의미
http://caml.inria.fr/pub/docs/manual-ocaml/libref/Map.Make.html
의 fold의 의미와 동일한 것입니다.
인용해드리면
인용: |
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
fold f m a computes (f kN dN ... (f k1 d1 a)...), where k1 ... kN are the keys of all bindings in m (in increasing order), and d1 ... dN are the associated data.
|
물론, 숙제에서는 Map이 Elt로 한번 감싸져있기 때문에 조금 다른 부분이 있습니다.
하지만, 이해하는데에는 어려움이 없을 것으로 생각합니다.
2. Powetset에서의 minus와 diff의 의미
교수님께 여쭤보고 답드리겠습니다. |
1. map은 fold와 다릅니다.
map: (entry -> entry) -> entry collection -> entry collection
이고 function에서 entry 는 input, output의 쌍
(curried 로 표현된 정의에서 "lelt -> relt")
참고로 fold는
fold: (entry -> result -> result) -> entry collection -> result -> result
----------------- ^지금까지 축적된 결과
----------------------------^더 축적된 결과
---------------------------------------------------------------^초기결과
---------------------------------------------------------------------------^최종결과
2. minus는 필요없습니다(실수). diff만 있습니다.
이광근 가 2009년5월9일 12:52에 수정함, 총 1 번 수정됨 |
|
위로 |
|
|
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2009년5월9일 12:50 주제: |
|
|
강지훈 학생이 map을 질문했는데, 제가 fold를 답했군요. 부끄럽습니다. _________________ - soon@ropas |
|
위로 |
|
|
이광근
가입: 2005년 8월 29일 올린 글: 68
|
올려짐: 2009년5월9일 18:04 주제: |
|
|
이광근 씀: |
1. map은 fold와 다릅니다.
map: (entry -> entry) -> entry collection -> entry collection
이고 function에서 entry 는 input, output의 쌍
(curried 로 표현된 정의에서 "lelt -> relt")
|
따라서
map: (lelt * relt -> lelt * relt) -> elt -> elt
입니다.
이를 커리(curried)꼴로(->로 늘어놓아) 다시쓰면
map: (let -> relt -> lelt * relt) -> elt -> elt
입니다.
이전 hw7의 다음이 아닙니다:
map: (let -> relt -> letl -> relt) -> elt -> elt
hw7(5/9 17:50이후 버전)을 사용하세요.
-K |
|
위로 |
|
|
|