클로져라 잘 이해 못하는 생키들 많을 테니 가짜 언어로 하나 급조해줌


이게 대략 오리지날 코드야



let location = header AND selectKeys(header, location-keys)

    // location => NIL or {:k1 v1 :k2 v2} or {}

    reason = validateLocation (location) // validateLocation = NIL or {<non-empty-key-value>}

    when reason

    throw "Invalid location ..."


    let newReq = addIfNotNull(req, :x-current-location, location)

                    + addIfNotNull(req, :avaliability, getAvaliablity(header))

        requestResult = handler (newReq)


        when location // i.e., not false or not NIL

           updatePathAccumulator (req, location)



저런 식으로 자꾸 if나 when 남발하는 코든데... 와 저기에 버그하나 들어가니까 옆에 있는 두 생키가 달려들었는데 쩔쩔 매고 있더라구 ㅋㅋ



내가 지나가다 잠깐 보니, 바로 버그가 보여서 이리저리 해보라 하니까 내가 생각한 버그가 맞더라구. 저 위에 주석 달아 놨지만, location에 {}가 될 수 있는데 그걸 처리 안한 버그야. 와 근데 그걸 고치려고 보니까, if, when 남발 때문에 스파케티인거야. 그래서 이 생키들이 키보드를 못두드리더라구 ㅋㅋㅋㅋ


그래서 결국 내가 손대서 더이상 아무도 향상시킬 수 없는 수준이 되게 해놈.



자 답안 공개 전에 니들도 함 해봐라 어케 하면 워즈니악 할아버지가 와도 더이상 손댈 수 없게 할 지