引数をチェックして、問題があれば Left に包んだエラーメッセージに、問題がなければ Right に包んだ計算結果に評価される関数を考えてみよう。 純粋な関数でもロジックを表現することは可能だが、if文のネストが深くなればなるほど地獄である。手続き型言語であれば早期リターンで書きたいところだが、関数型言語ではどうするのか。 checkName :: String -> String -> Either String String checkName fstname famname = if ( length fstname == 0 ) then Left "error: fstname is empty" else if not (isValidFirstName fstname) then Left "error: fstname is invalid" else if ( leng