λx. x K S K @はてな

このブログ内に記載された文章およびコードの著作権は,すべて Keisuke Nakano に帰属します.

ネタばらし(csort.ml)

標準入力の文字列を昇順に並べ替える問題m.ukaiさん曰く,

トップはどうなってるのかさっぱり分かりません。
とのことでしたが,大したテクニックがあるわけではないので公開してしまいます. というか,私のコードは m.ukai さんのとほとんど同じものです. 要は,Sort モジュールの存在を知っているかどうかという問題で, List.sort : ('a -> 'a -> int) -> 'a list -> 'a list の代わりに Sort.list : ('a -> 'a -> bool) -> 'a list -> 'a list を使えば,
let rec f l=try f(input_char stdin::l)with
_->List.iter print_char(Sort.list(<)l);;f[]
と,大幅に短くできるという話でした. [追記] input_char を使う代わりに Stream モジュールを駆使するとまだ短縮します. delete blank linesの方の1Bは何とかなったので,サーバが復旧次第提出しておきます.