본문으로 건너뛰기
피드

클로저 1.13 알파, map destructuring에 ‘필수 키 체크’ 추가

backend 약 4분
vote
0
댓글
북마크

Clojure 1.13.0-alpha1이 공개되며 map destructuring에서 필수 키 누락을 바로 잡아낼 수 있는 새 지시자들이 추가됐다. 기존 :keys, :syms, :strs의 체크 버전인 :keys!, :syms!, :strs!를 쓰면 필요한 키가 없을 때 예외를 던질 수 있다.

  • 1

    Clojure 1.13.0-alpha1이 공개됐다

  • 2

    :keys!, :syms!, :strs!가 새로 추가돼 map destructuring에서 필수 키 존재 여부를 검사한다

  • 3

    모든 destructuring directive에서 & 뒤에 바인딩하지 않을 키를 문서화 또는 체크용으로 적을 수 있다

  • 4

    사용자는 deps.edn 의존성을 갱신하고 Clojure CLI로 REPL을 시작해 테스트할 수 있다

  • Clojure 1.13.0-alpha1이 공개됨

    • 아직 정식 릴리스가 아니라 알파 버전임
    • 다운로드와 사용법은 Clojure 공식 Downloads 페이지에서 확인할 수 있음
  • 핵심 변경은 map destructuring에서 필수 키를 검사할 수 있게 된 점임

    • 기존에는 :keys, :syms, :strs 지시자로 맵에서 값을 꺼냈음
    • 새로 :keys!, :syms!, :strs! 체크 버전이 추가됨
    • 지정한 키가 없으면 그냥 nil로 넘어가지 않고 예외를 던짐
  • 이건 Clojure 코드에서 은근 자주 생기는 실수를 줄여줌

    • destructuring 키 이름을 잘못 쓰면 값이 nil이 되어 뒤쪽 로직에서 터질 수 있음
    • 특히 옵션 맵이나 설정 맵을 많이 넘기는 코드에서는 원인 추적이 귀찮아짐
    • 필수 키를 선언하는 순간 누락 지점에서 바로 실패하니 디버깅 비용이 줄어듦

💡

> 옵션 맵을 받는 함수에서 “없어도 되는 키”와 “반드시 있어야 하는 키”가 섞여 있다면 :keys!가 꽤 유용할 수 있음. nil 허용 여부를 코드 읽는 사람에게도 바로 보여주기 때문임.

  • 모든 directive에서 & 뒤에 바인딩하지 않을 키를 적을 수도 있게 됨

    • 실제 변수로 묶지는 않지만 문서화 용도로 사용할 수 있음
    • 체크 목적의 선언에도 쓸 수 있음
    • destructuring 구문이 데이터 계약을 더 잘 드러내는 방향으로 간 셈임
  • 사용하려면 deps.edn의 :deps를 갱신하고 Clojure CLI로 REPL을 시작하면 됨

    • 원문에는 deps.edn 업데이트와 REPL 시작 예시가 이어지지만, 수집된 본문에는 실제 코드 블록 내용이 빠져 있음
    • 그래도 기능 자체의 핵심은 checked variants 추가로 충분히 파악 가능함

기술 맥락

  • 이번 변경의 포인트는 동적 언어에서 데이터 계약을 어디까지 문법 가까이에 둘 것인가예요. Clojure는 맵을 유연하게 넘기는 코드가 많아서 편하지만, 필수 키가 빠져도 nil로 흘러가면 버그 위치가 뒤로 밀리거든요.

  • :keys!는 그 문제를 destructuring 시점에서 끊어줘요. 함수 안쪽 로직이 한참 돈 뒤 NullPointer 비슷한 문제를 만나는 대신, 입력 맵에 필요한 키가 없다는 사실을 더 빨리 알 수 있어요.

  • & 뒤에 바인딩하지 않을 키를 적게 한 것도 의도가 있어요. 실제로 변수로 쓰지 않더라도 “이 맵은 이런 키를 기대한다”는 정보를 destructuring 자리에 남길 수 있어서, 코드가 작은 스키마처럼 읽히게 돼요.

  • 큰 기능은 아니지만 라이브러리 API나 내부 서비스 경계에서 꽤 실용적이에요. 특히 설정 맵, 이벤트 페이로드, 옵션 맵처럼 느슨한 데이터가 오가는 곳에서는 이런 체크가 런타임 안정성을 조금씩 올려줘요.

작은 문법 개선처럼 보이지만, Clojure 코드에서 destructuring 오타나 누락 키를 조용히 nil로 흘려보내던 문제를 줄여주는 변화다. 동적 언어에서 이런 체크 포인트가 늘어나는 건 운영 코드 안정성에 꽤 실용적이다.

댓글

댓글

댓글을 불러오는 중...

backend

시카고 미술관 API에 숨어 있는 ‘조회수 낮은 작품’ 필드

시카고 미술관 API에는 웹사이트에서 거의 조회되지 않은 작품을 표시하는 불리언 필드가 있다. 기준은 2010년 1월 1일 이후 조회수 200회 미만으로, API 설계 안에 꽤 인간적인 큐레이션 포인트가 숨어 있는 셈이다.

backend

유엔넷 DB 관리 솔루션, 오라클에서 PostgreSQL로 가는 일본 시장 노린다

유엔넷이 일본 PostgreSQL 기술지원 기업 뮤텍과 독점 공급 계약을 맺고 DB 성능 분석 솔루션 타란튜너를 일본에 공급해. 오라클에서 PostgreSQL로 전환하는 기업이 늘면서 SQL 지연, 잠금 경합, 실행 계획 비교 같은 운영 관리 수요를 겨냥한 움직임이야.

backend

유니스와프 ‘듀얼풀 훅’, 비활성 자산에서도 수익을 만들 수 있을까

유니스와프가 듀얼풀 훅 감사를 진행 중이며 완료 후 오픈소스로 공개할 계획이라고 전했다. 이 기능은 활성 자산과 비활성 자산 모두에서 수익 전략을 만들 수 있다는 점에서 DeFi 유동성 구조 변화로 언급되고 있다.

backend

EDB, 포스트그레스 AI에 자율 운영 DB와 실시간 분석 기능 추가

EDB가 포스트그레스 기반 AI 데이터 플랫폼에 에이전틱 데이터베이스와 통합 분석 기능을 추가했다. 데이터 이동 없이 관계형·분석·벡터·에이전트 워크로드를 한 플랫폼에서 처리하고, 운영 지표 200개 이상을 모니터링해 튜닝과 문제 대응을 자동화하는 방향이다.

backend

PostgreSQL에서 OOM 킬러가 위험한 이유와 리눅스 커널의 한 글자 버그

Ubicloud가 PostgreSQL에 엄격한 메모리 오버커밋을 쓰는 이유를 설명하다가, 리눅스 6.5 커널의 Committed_AS 누수 버그를 추적한 사례를 공개했음. 8GB 서버에서 651GB가 커밋된 것처럼 보이는 현상이 있었고, 원인은 mremap 경로의 조건문 하나가 잘못 바뀐 커널 버그였음.