Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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"))