デバッガはないのかね

Haskell は関数の処理が高級だから、本当にタイプは少なくてすむと思う。だから、やりたいことの方法さえわかっていれば、本当にコードを組むのは早いと思うよ。

Haskell と C のクイックソートをそれぞれ見てみようか。

これが Haskell。わずか 2 行。

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

こっちは C。行数はがんばって減らしてるほうだけど、結構多いよね。

void qsort(int a[], int lo, int hi) {
  int h, l, p, t;

  if (lo < hi) {
    l = lo;
    h = hi;
    p = a[hi];

    do {
      while ((l < h) && (a[l] <= p)) 
          l = l+1;
      while ((h > l) && (a[h] >= p))
          h = h-1;
      if (l < h) {
          t = a[l];
          a[l] = a[h];
          a[h] = t;
      }
    } while (l < h);

    t = a[l];
    a[l] = a[hi];
    a[hi] = t;

    qsort( a, lo, l-1 );
    qsort( a, l+1, hi );
  }
}

こうやって比べると、C より Haskell の方がすごく有利な気がするんだけど、今の僕じゃ Haskell の 2 行目が自分の脳みそから搾り出せないから、僕の場合 C の方が早いんだ。

でも、コードの量なんてものはプログラミングでは些細なことで、もっともっと大切で重要で大事なものは、デバッグ環境だと僕の経験は語っている。

プログラミングでもっとも時間がかかるのは、実はデバッグでしょ?

Haskell の場合、デバッガがないので、いや、ステップ実行なんてことは Haskell の言語仕様ではできないので、デバッガなんてあり得ないのかな、とにかく、ないので、原始的なやり方をせざるを得ないんだけど、それすらわからんので始末に困る。

引用元:Introduction - HaskellWiki