{"action":"created","issue":{"url":"https://api.github.com/repos/snu-sf-class/pp201602/issues/62","repository_url":"https://api.github.com/repos/snu-sf-class/pp201602","labels_url":"https://api.github.com/repos/snu-sf-class/pp201602/issues/62/labels{/name}","comments_url":"https://api.github.com/repos/snu-sf-class/pp201602/issues/62/comments","events_url":"https://api.github.com/repos/snu-sf-class/pp201602/issues/62/events","html_url":"https://github.com/snu-sf-class/pp201602/issues/62","id":184004540,"number":62,"title":"과제 4번의 함수 사용 관련 질문 드립니다.","user":{"login":"HyjK","id":13164194,"avatar_url":"https://avatars.githubusercontent.com/u/13164194?v=3","gravatar_id":"","url":"https://api.github.com/users/HyjK","html_url":"https://github.com/HyjK","followers_url":"https://api.github.com/users/HyjK/followers","following_url":"https://api.github.com/users/HyjK/following{/other_user}","gists_url":"https://api.github.com/users/HyjK/gists{/gist_id}","starred_url":"https://api.github.com/users/HyjK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HyjK/subscriptions","organizations_url":"https://api.github.com/users/HyjK/orgs","repos_url":"https://api.github.com/users/HyjK/repos","events_url":"https://api.github.com/users/HyjK/events{/privacy}","received_events_url":"https://api.github.com/users/HyjK/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2016-10-19T16:01:01Z","updated_at":"2016-10-20T06:07:08Z","closed_at":null,"body":"안녕하세요!\r\n먼저 과제와 관련하여 질문을 드리게 되어 정말 죄송합니다.\r\n혼자서 꽤 오래 고민해보았는데 여전히 모르겠고 시험 전까지도 혼자 이해할 자신이 없어서, 실마리라도 주시면 감사할 것 같아서 질문합니다.\r\n먼저 질문하신 분처럼 myClass에서 apply 함수의 타입 정의 부분이 잘 이해가 가지 않습니다. \r\n\r\n`def apply: { val a: A ; val c: C } => pair[B, D]` \r\n\r\n이 코드에서 apply가 {val a: A; val c: C} => pair[B, D] 라는 타입을 가진 함수라는 것은 알겠습니다.\r\n그런데 제가 apply 함수를 1) 사용함에 있어서 val a, val c 를 어떻게 쓰는지, 2) 정의함에 있어 인자 a, c의 값을 어떻게 주는지 여러 시도를 해보아도 잘 모르겠습니다. 이 부분이 문제의 핵심인 것 같아 사실 질문을 어떻게 드려야 할지 잘 모르겠네요..\r\n1) 예를 들어 currying을 할 때처럼 commonTy 타입 x에 대해 x.apply(a, c) 이런 식으로 a, c의 값을 넣어줄 수 없는 건가요? 리턴값이 { val a: A; val c: C } => pair[B, D] 가 아니라, {val a: A; val c: C} 이 부분을 넣어주어 pair[B, D]만 나오게 하고 싶습니다. 여러 syntax를 시도해보는데 오류가 계속 나서 이게 가능한지부터 여쭤보고 싶었습니다. \r\n\r\n2) a, c 값을 이용해서 위 코드의 => 뒷 부분을 정의하고 싶은데 뒷부분에 a, c를 넣으면 모두 cannot resolve symbol a 가 뜹니다. 즉 pair 가 들고 있는 값들이 a, c에 의해 결정되도록 하고 싶은데 a, c 라는 기호가 인식되지 않네요..\r\n슬라이드에 있는 다른 예시들은 (p.92) 아래처럼 {val a: Int; val b: Int} 라는 값에 대해 s 라는 alias를 주고 있어서 s.b, s.a 같은 식의 접근이 가능한 것 같은데, () 안에 들어 있는 인자가 아니라 {} 에 들어 있는 {val a: A; val c: C} 는 어떻게 접근해야 하는지, 또는 어떻게 값을 넣어야 하는지 잘 모르겠습니다. \r\n`def foo(s: {val a: Int; val b: Int}) : {val x: Int; val y: Int} = {\r\nobject tmp {\r\nval x = s.b\r\nval y = s.a }\r\ntmp }`\r\n\r\n아마도 질문하는 내용들이 묻고자 하는 내용과 같거나 비슷할 수 있을 것 같은데,\r\n답변을 직접적으로 줄 수 없다면 혹시 1) 어떤 키워드로 보다 공부를 해보면 좋을지(구글에서 찾아도 비슷한 예시함수를 잘 못 찾겠어서요..) 2) 제가 완전 잘못된 방향에서 고민하고 있는 것이 아닌지 정도와 3) 간단한 피드백이라도 주실 수 있으면 감사하겠습니다.\r\n\r\n긴 질문 읽어주셔서 감사합니다. 혼자 공부하다보니 잘 못 따라가는 부분이 많은데, 잘 부탁 드립니다.\r\n좋은 하루 보내세요 :) "},"comment":{"url":"https://api.github.com/repos/snu-sf-class/pp201602/issues/comments/255017282","html_url":"https://github.com/snu-sf-class/pp201602/issues/62#issuecomment-255017282","issue_url":"https://api.github.com/repos/snu-sf-class/pp201602/issues/62","id":255017282,"user":{"login":"HyjK","id":13164194,"avatar_url":"https://avatars.githubusercontent.com/u/13164194?v=3","gravatar_id":"","url":"https://api.github.com/users/HyjK","html_url":"https://github.com/HyjK","followers_url":"https://api.github.com/users/HyjK/followers","following_url":"https://api.github.com/users/HyjK/following{/other_user}","gists_url":"https://api.github.com/users/HyjK/gists{/gist_id}","starred_url":"https://api.github.com/users/HyjK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HyjK/subscriptions","organizations_url":"https://api.github.com/users/HyjK/orgs","repos_url":"https://api.github.com/users/HyjK/repos","events_url":"https://api.github.com/users/HyjK/events{/privacy}","received_events_url":"https://api.github.com/users/HyjK/received_events","type":"User","site_admin":false},"created_at":"2016-10-20T06:07:08Z","updated_at":"2016-10-20T06:07:08Z","body":"감사합니다!!! 새로운 record type을 형성해서 apply에 넘겨주는 개념인가봐요(제가 이해한 바로는)! \r\n왜인지는 잘 모르겠지만 처음에는 Object{type ~~~; type~~~ }여서 {type ~~~; type~~~} 와 달라서 type mismatch라고 뜨더니 조금 기다렸더니 되네요!\r\n\r\n감사합니다. :):)"}}
{"actor":{"display_login":"HyjK"}}