kiyoka.2007_11_17 RSSPLAIN

Related pages: !kiyoka.blog.list kiyoka.2007_12_21 !kiyoka.blog.2007_12 !kiyoka.blog.2007_11
5555555555555555555555555555555544
5

[プログラミング]bashで高階関数のアイデア

5

bashで高階関数が使えたらどんだけプログラミングが楽になるか。最近そう考えるようになった。

5

欲しい高階関数は、こんな感じかな。

5

 

5
map    ( xargs のaliasでも良い?)
5
filter ( grep のaliasでも良い?)
5
fold
5
map_with_index
5

 

5

ついでに関数型プログラミングっぽいコードを書く為に必要そうな関数(コマンドで実装する?)

5
take
5
atoi (名前はPythonに習ってrangeでも良い)
5

 

5

ところで何でbashにこだわるの?という疑問が当然発せられると思う。

5

それはbashから呼びだす関数(というかコマンド)が一番豊富だと思うから。かつ実装系が枯れている。

5

例えば、画像の変換を行ないたいと思えばImageMagikのconvert関数を呼べばよい。

5

ファイルを圧縮したいと思えばgzipコマンドを呼べば良い。

5

ファイルリストを取りたいと思えばfindを呼べば良い。

5

さらには、メールを送りたいと思えばmailを呼べば良い。

5

もし、高階関数があればこんなコーディングができるかも。

5
 f() { echo -n $1; md5sum $2 }
5
 find . | map_with_index f
5

fがbashの関数である限り、map_with_indexはbashの関数で書かざるを得ない。

5

使うのは簡単だけど作るのはちょっと厳しいかな。

5

もしかしたらもっと強力な言語(RubyとかPythonとか)でbashスクリプトを生成してから

5

実行するスタイルにするほうがうまく行くかも。

5

でも、そうするとbashのお手軽さは無くなっちゃうし。うーん。バランスが難しい。

5

 

5

こんなの(Es: A shell with higher-order functionsEXT)があるが、新しい言語を実装するのは大袈裟すぎる。

5

枯れた実装系であるbashをそのまま使いたいよね。

5

できればbashで100から200行程度でできて source でファイルを読みこむだけで使えるものが良い。

5

OldType実装ついでに良いものが出来たら分離してリリースするかも。

4

 

4

...comment disabled...