GlueLangをHaskell化していこうと
Sat Dec 27 11:59:34 JST 2014 (modified: Sat Sep 30 16:15:34 JST 2017)
views: 1941, keywords:GlueLang,Haskell,グルー言語を作る この記事は最終更新日が7年以上前のものです。
昨日のGlueLangへのパイプライン実装ですが、実装後、パイプは「>>=」で書いたほうが良いんじゃないかという行き当たりばったりなアイデアを思いついたので、やってみました。
これがサンプルスクリプトです。
:TEST ueda$ cat pipeline_mac4.glue
uedambp/usr/bin/seq '1' '5' >>=
/usr/bin/tail '-r' >>=
/usr/bin/tr '\\n' ' ' >>=
/usr/local/bin/awk '{print}'
###実行###
:TEST ueda$ ../main pipeline_mac4.glue
uedambp5 4 3 2 1
うん、「, . 」よりも見やすい(主観)。
ということで、READMEのサンプルコードも次のように書き直しました。Haskellもどきです。READMEはGitHubで読めます。READMEには、コンパイルして試す方法も追記しましたので、ちょっと試していただけたらと。
import /bin/ as b
import /usr/bin/ as ub
= do
main infile = cattac infile
file tmp .cat tmp
b
= b.cat file >>= ub.tail '-r' cattac file
型の考え方も、テーブルの列数とかちょっとしたデータの縛りを作るのに利用できそうです。
Haskell風にしたことで数学のコワイお兄さんたちにトラップされそうですが、やっぱりシェルスクリプトは関数型だという持論を表現しやすいので、こっちの方向で開発を進めます。