はてなのシンタックス・ハイライトがダイアリーにも

はてなダイアリー日記 - 入力したプログラムコードを色付けするスーパーpre記法 シンタックス・ハイライトの実装について

やっとはてなダイアリーにも実装された。やっぱり、べた書きのコードはるのは見にくくて結構いやだったのでこれはうれしい所ですよ。さっそく、本日がっこうでぐだぐだ書いて見ていたコードを貼付けてみよう。

import System
import Char

main =
  do
    cs <- getContents
    args <- getArgs
    putStrLn $ unlines $ concatMap (splitLine $ parseArgs args) $ lines cs

  where
    parseArgs :: [String] -> Int
    parseArgs [] = 60
    parseArgs (x:_) =
      if all isDigit x
        then stringToInt x
        else 60
      where
        stringToInt :: String -> Int
        stringToInt cs =
          let
            n = digitToInt $ last cs
          in
            n + (stringToInt' 10 $ rdrop 1 cs)
          where
            rdrop :: Int -> [a] -> [a]
            rdrop n as = reverse $ drop n $ reverse as

            stringToInt' :: Int -> String -> Int
            stringToInt' _ [] = 0
            stringToInt' d cs =
              let
                n = digitToInt $ last cs
              in
                n * d + (stringToInt' (d * 10) $ rdrop 1 cs)

    splitLine :: Int -> String -> [String]
    splitLine _ [] = []
    splitLine n cs =
      let
        splited = splitAt n cs
        newline = fst splited
        remain  = snd splited
      in
        newline : splitLine n remain

Haskellかよ。はじめてのひとがHaskell書くとこうなります。たぶん。
つかstringToIntが長すぎ。ふつうのHaskell使いはこれを鬼のように短く書けるに違いない。