저기 보면 2번째 줄에 return (...p) 라고 했는데 (...p)는 매개변수 부분이고 다시 익명함수를 만들어서 f(g(...p))를 리턴하자나
근데 p라고 하는게 아니라 ...p라고 했담말야
...p가 대체 머냐구!!
저기 보면 2번째 줄에 return (...p) 라고 했는데 (...p)는 매개변수 부분이고 다시 익명함수를 만들어서 f(g(...p))를 리턴하자나
근데 p라고 하는게 아니라 ...p라고 했담말야
...p가 대체 머냐구!!
댓달았음 보셈
ㄴ ㅇㅇ 감사용~~
매개변수 x, y, z가 있는데 var params = [2, 3] 함수(1, ...params) 해버리면 2, 3이 전개되서 y z값으로 들어감
ㅇㅇ//되서->돼서 (되어 = 돼임) [리듬 맞춤법 봇♬]
1. dot에서 return (...p) => 의 ... 연산자와 f(g(...p))의 ...연산자는 다른 요소임. 앞쪽꺼는 Rest parameter라고 연산자라 하기도 좀 그렇네
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters
뒤쪽이 spread operator고 ㅇㅇ
2. 리스트 모나드 구현에 활용한 건 좋은데 dot이랑 copy함수는 리스트 모나드 구현에서 안쓰이고 있는데...특히 copy는 왜 있는건지 잘 몰겠다
3. 그리고 딱히 spread operator가 리스트 모나드 구현에서 결정적인 역할을 한 것도 아님. acc.push(...f)가 아니라 acc.append(f)라 해도 상관 없는데...뭔가 내가 알지 못하는 엄청난 효과가 있는 건가?
저글쓴사람임 위에 2개는 상관없는 함수고
푸시에서 스프레드하는건 배열을 펼쳐서 넣기위한거임[ [★ ☆] [ ☆ ★ ] ]말고 [★ ☆ ☆ ★]로 넣기위해
f는 [ [★ ☆] [ ☆ ★ ] ] 형태가 리턴되는 함수가 아닌데... bind의 타입은 forall a b. Array a -> (a -> Array b) -> Array b이고 여기서 f는 (a -> Array b)가 됨. (a -> Array (Array b)) 가 아니라
그리고 flatten이랑 spread를 혼동하는거 같은데 [ [★ ☆] [ ☆ ★ ] ] 가 [★ ☆ ☆ ★] 되는건 flatten됐다고 하고 [ [★ ☆] [ ☆ ★ ] ] 가 [★ ☆], [ ☆ ★ ]가 되는게 spread됐다고 하는거임.