タグ

2012年11月17日のブックマーク (2件)

  • 関数プログラミング的なシェルスクリプト

    Mar 18, 2007 ご存知のように、POSIX (UNIX, Linux など) では bash などのシェルスクリプトをもちいて 処理を自動化できます。ここでは、シェルスクリプトを関数言語的に味付けして遊んでみました。 bash の関数は再帰的に呼び出すことが可能なので、例えば、階層的なディレクトリ構造以下の 全てのファイルに同じ処理を施したいときは以下のような簡単なスクリプト (for_all) でできます。 このスクリプトで 変数 FULL をlocal で宣言しているのがミソで、 こうすることによって、変数が関数内だけで有効になるので、関数を再帰的に定義することができるようになります。 for_all の内部で定義されている関数 rec は以下のように動作します。 ls で見つかったものがファイルなら $1 で指定された処理を行う。 ディレクトリなら rec を再帰的に呼び出

  • 本を読む 関数型言語shの基礎文法最速マスター

    関数型言語shの文法一覧です。他の関数型言語をある程度知っている人がこれを読めば、shの基礎をマスターしてshを書けるようになっています。以下、Clojureあたりを想定して説明します。 注意:これは基礎文法最速マスターねたのパロディです。動作は物ですが、意味はコジツケです。 REPL shの処理系は、POSIX準拠のUnix系環境であれば標準で用意されています。REPLを起動するには、shを実行します。 sh すると、プロンプトが表示されます。 $ shのほかに、REPLに行編集機能を付けたbash・zsh・tcshなどもありますが、ここでは割愛します。 なお、REPLとして使うほかに、あらかじめ用意したスクリプトをshで実行することもできます。 sh hoge シーケンス shの扱うデータは、すべて、ある単位(ラインと呼びます)のデータが並んだシーケンスです。たとえば、seq関数(L