Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Hyの公式コーディングルールでは"->"が推奨

"->"はthreading macroといい、Hylangを特徴付ける記法の一つです。
シェルスクリプト のPipeのような感じで記述できるので、
Lisp系特有の地獄の括弧ネストを幾分見通しよくすることができます。

実際のところ

伝統的書き方だと

(setv *names*
  (with [f (open "names.txt")]
  (sorted (.split "," (.replace "\"" "" (.strip (.read f)))))))

これがhreading macroであれば以下のように

(setv *names*
  (with [f (open "names.txt")]
    (-> (.read f) (.strip) (.replace "\"" "") (.split ",") (sorted))))

パッと見では解釈が難しいこんな式も

(import [sh [cat grep wc]])
(wc (grep (cat "/usr/share/dict/words") "-E" "^hy") "-l")

これが

(import [sh [cat grep wc]])
=> (-> (cat "/usr/share/dict/words") (grep "-E" "^hy") (wc "-l"))