続々sequentially-apply
ネタはさておき、実際のコードで使ってみた例とかも載せておく。
;; before
(defun sha1 (obj)
(let* ((string (encode-json-to-string obj))
(octets (string-to-octets string))
(digest (digest-sequence :sha1 octets)))
(byte-array-to-hex-string digest)))
;; after
(defun sha1 (obj)
(sequentially-apply (encode-json-to-string obj)
(string-to-octets _)
(digest-sequence :sha1 _)
(byte-array-to-hex-string _)))
誤差だと思えてならないが、相対的にすっきりはしている。気になるのは、コードを読むときに視点が右上から左下に動くこと。微妙に読み辛い?
(defun sha1 (obj)
(pipe (encode-json-to-string obj)
(string-to-octets _)
(digest-sequence :sha1 _)
(byte-array-to-hex-string _)))
みたいに揃ってる方が、視点が上から下って感じで見易い気もする。
0 件のコメント:
コメントを投稿