m이 붙은건 마이 의 축약어고,
m 안붙은걸 먼저 만들었다가 반대방향으로 m을 다시 만들었음.
mscanl은 내가 구현한거 아니고, 책에서 나랑 다른 방향으로 구현했었을 뿐임.
mscanl을 보고 이거 설마!! 하고 mscanr도 만들어봤음.
중간에 재귀 쓸때 Sing.scanl 처럼 되어있는거는, 모듈 이름이 Sing이라서 그럼. 표준함수랑 이름 겹쳐서 재귀할때 모듈명 써야함.
m이 붙은건 마이 의 축약어고,
m 안붙은걸 먼저 만들었다가 반대방향으로 m을 다시 만들었음.
mscanl은 내가 구현한거 아니고, 책에서 나랑 다른 방향으로 구현했었을 뿐임.
mscanl을 보고 이거 설마!! 하고 mscanr도 만들어봤음.
중간에 재귀 쓸때 Sing.scanl 처럼 되어있는거는, 모듈 이름이 Sing이라서 그럼. 표준함수랑 이름 겹쳐서 재귀할때 모듈명 써야함.
mscanr 진짜 존나 고생해서 만들었다. 이게 방향을 바꾸는게, 다름아니라 관점을 틀어서 본다는건데, 어떻게 관점을 틀어야하나 한참 고민했음. 일단 하스켈에서 방향을 바꾸는 방법은, 재귀 연산을 인자 안에서 해결하느냐 재귀 바깥에서 해결하느냐 의 차이가 있음. 그 관점으로 생각하다가 나중에 어디서 내가 잘못했구나 깨달았냐면, 결괏값이 반대면 head 대신에 last를 써야하는구나. 이거 가닥 잡은 다음부턴 쉬웠음
head 버전을 last 버전으로 바꾸면 쉽게 풀리는 문제였음. 어떻게 쌓을지를 고민할게 아니라
어떻게 쌓을지를 고민하면서 "인자안에서 해결하는 방식으로 가야한다" 뭐 이런식으로 생각하니까 답이 안나오더라고
아 다 만들고 보니까 mscanr 도 인자 안에다가 재귀 집어넣기도 했구나? ㅇㅇㅇ 저것도 출발선이었다고 할 수 있지
딱국추