HaskellAndSh

2003-12-31 02:40:39 +0900 (1798d); rev 3

Haskell と sh の似てるところを列挙しよう

lazy

sh: パイプを構成するプロセスの実行順序は不定。 必要なくなったプロセスは SIGPIPE で終了する。

Haskell: 関数の実行順序は不定。 必要ない関数は最初から実行されない。

パイプと関数合成

# sh
cat file | sort | uniq | head -3

-- Haskell
do cs = getContents
   take 3 $ uniq $ sort $ lines cs

もっともこの程度なら Ruby だって似てると言えてしまう。

# Ruby
File.readlines.sort.uniq[0...3]

case

# sh
case "expr" in
linux*)    onLinuxExpr;;
solaris*)  onSolarisExpr;;
*)         defaultExpr;;

-- Haskell
case expr of
  "linux" -> onLinuxExpr
  "solaris" -> onSolarisExpr
  _ -> defaultExpr

もっとも sh の case でマッチできるのは文字列だけだ。 Haskell のパターンマッチは何でもできる。


system revision 1.162