https://clojure.org/news/2022/03/22/clojure-1-11-0
3일 전에 나온 따끈따근한 버전
눈에 띄는 피처들을 정리해 보았다
1. 키워드 인자를 받는 함수는 map도 받을 수 있게 변경
몇몇 언어들은 f(a=1, b=2, **kwargs)로 선언하고
f(a=10, b=30, c='a', d='e') 이런 식으로 호출하는 함수를 정의할 수 있다
근로저에도 비슷한게 있다
(defn destr [& {:keys [a b] :as opts}] [a b opts])그러면 이렇게 호출할 수 있다.
(destr :a 1) => [1 nil {:a 1}] (destr :a 1 :b 2) => [1 2 {:b 2, :a 1}](destr :a 1 :b 2 :c 3 :d 4) => [1 2 {:c 3, :b 2, :d 4, :a 1}]다만 키워드 인자니까, 반드시 짝수 개의 인자를 받아야 했다.
user=> (destr {:a 1 :b 2}) Execution error (IllegalArgumentException) at user/destr (REPL:1). No value supplied for key: {:a 1, :b 2}user=> (destr :a) Execution error (IllegalArgumentException) at user/destr (REPL:1). No value supplied for key: :a그런데 이번 버전에서는 단 하나의 인자를 받는 것은 허용했으며
(destr :a) => [nil nil :a] (destr 1) => [nil nil 1] (destr [1 2 3 4 {1 3}]) => [nil nil [1 2 3 4 {1 3}]]그 하나의 인자가 map일 경우 짝수개로 인자를 넣는 것처럼 맵핑도 해준다.
(destr :a 1 :b 2) => [1 2 {:a 1, :b 2}] (destr {:a 1 :b 2}) => [1 2 {:a 1, :b 2}]이걸로 얻을 수 있는 장점은 인자를 받는 함수를 programatic하게 갖고 놀기 편해졌다는 점이다.
원래는 map을 seq로 편 다음 함수에 apply를 박고 똥꼬쇼를 해야 했다.
2. 이거 왜 이제 나옴? 함수들 나옴
Additionally, a number of functions have been added to clojure.core:
parse-double parse-long parse-boolean 대충 문자열을 파싱하는 함수, 원래 호스트 언어(갓바, 갓바스크립트) interop으로 날먹했음
parse-uuid random-uuid 왜 이제 나옴? 2
update-keys update-vals map 자료구조에 대해서 map(f, seq) 함수처럼 맵핑하는 함수. 왜 이제?
and iteration.
이 친구들은 유저들이 넣어달라고 울부짖으면 보통 지라 티켓 하나 던져줌
거기 보면 뭐 이유가 구구절절 이걸 고려하고 저걸 고려하고,,, 그래서 늦었다는데
방망이 깎는 노인네들이 따로 없다
암튼 잘 됬음
3. 네임스페이스 로드 없이 네임스페이스 alias 사용 가능
Spec (and other libs) rely on qualified keywords as spec names. Namespace aliasing in ns makes long names shorter but required namespaces to exist and be loaded. In Clojure 1.11, require adds a new option :as-alias, which is like :as but does not require the namespace to exist or load.
나는 사실 이게 정말 정말로 너무 마음에 드는 피처인데
이건 근로저맨들 중에서도 혼모노들... spec이나 qualified keyword 많이 써 본 사람들이나 와 닿는 거라
설명할 게 너무 많고 이해하기도 어렵기 때문에 자세한 설명은 생략
아무튼 나는 보자마자 지렸다는 것만 밝혀 둠
그 외에도 호스트 interop에 의존하던 수학 관련 함수들을 clojure.math로 추상화했다는 것도 있고 기타 등등
여러분도 한번 잡숴 보세요 => https://clojure.org/
근로저 조아
무지성 개발이 힘들어서 안한다 이거야
츄라이츄라이
해당 댓글은 삭제되었습니다.
그건 처음부터 지원이 됬고, 파이썬으로 치면 이번 버전부터 f(**{"a":1, "b":2}) 이 문법을 지원한다는 거랑 비슷한 이야기임
ㅇㅇ
원래 키워드인자 지원했는데 키워드인자 함수에 맵박는걸 가능하게 해줬단 소리
2번 목록들은 진짜 왜 이제 나옴...? ㄷㄷㄷ
근로저는 자바나 자바스크립트를 호스트로 위에 얹어서 쓰는 언어인데, 저런 것들 보통 호스트 언어의 표준 라이브러리 쓰면서 뻐팅기다가 진짜 필요한 것만 넣어 주는 느낌임. 그 외에도 언어 개발 자체가 보수적인 면이 있음. 그래서 장점은 언어가 stable하다는 거고 단점은 피처가 늦게 들어오는 것 ㅇ
피쳐가 근근이 들어오네 근하하
먼 근로저여~~