>>375
DelphiやC#でPaint的なの作ったり程度なら出来るけど、ライブラリがサポートしてないファイル形式を読み書きするアルゴリズムをファイル解析して作ったりは出来ないと言ったレベルです。

Haskellがコンパイル通ったらほぼバグが無いのはHaskellの関数が全て数学的な意味での関数だからかと。
普通の言語のifもHaskellでは必ず値を返さないといけないので、elseが無い処理をHaskellで再現する際は失敗する可能性のある型として、Maybe型で包みます。

if x == 1 then Maybe x else Nothing

あとはパターンマッチが上から精査される性質上、空のリストを受け取った場合の様な、
特殊なパターンから順番に書かないと止まらない場合があるので、特殊なパターンを先に書いていくと言う暗黙のルールがあったり。

一見不便なそう言うのが、バグが有ったら戻り値の型が合わないと言う形で出て来るのではと。

Haskell難しいって人はリストのリストとか、そのまたリストとか、そう言うのを返す関数作って型が合わないって怒られてイライラした人なんじゃ無いかと思う。
そう言う時は部品として使ってる小さい関数が正しく動いてるか再確認して行けば、大抵解決する。

オブジェクト指向でもメソッドチェーンが繋がると気持ち良いとか、でもデバッグ大変とか言われてると思うけど、
そう言う気持ちよさと(自分では思った事ないけど)大変さがある。

Haskellは最終的に全部がmain関数の値を求める巨大な式に集約される。

Pythonでも書いて良く比較する事あるけど、パターンマッチで箇条書きにするからか、Pythonと比べるとロジックのミスは確実に少ない。
(Haskellで先に書いて、同じ処理をPythonで後から書いてるのに、Pythonの方がバグを作り込む)