ああああ、また 20 時間も寝てしまった。 どうしてこういうことになるんだ。 おれのバカバカバカ〜。
そうです、Amazon で一番上に来るやつです。
"Garbage Collection: Algorithms for Automatic Dynamic Memory Management" Richard Jones / Rafael Lins, John Wiley & Sons, 1996
ちなみに Haskell のほうは 「やさしい Haskell 入門」 のお勧めにあった "Introduction to Functional Programming using Haskell" を 買ってみました。
http://i.loveruby.net/ja/haskell/head.hs
module Main where import System import IO main :: IO () main = do args <- getArgs case args of [] -> headFile stdin 10 args -> mapM_ (\a -> do f <- openFile a ReadMode headFile f 10 hClose f) args headFile :: Handle -> Integer -> IO () headFile f n = if n == 0 then return () else do eof <- hIsEOF f if eof then return () else do line <- hGetLine f putStrLn line headFile f (n-1)
cat を応用すればすぐだろうと思ったら 2 引数関数ではまる罠。 自動的にカリー化 (※) されるなんて、そりゃー予測できないよ……。
※ 関数が複数の引数を持つとき、それを一引数の関数のネストに分解すること。
(lambda (a b) ....) ↓ (lambda (a) (lambda (b) ....)
という感じ。
しかもまたもや eof <- hIsEOF を消そうとしてはまるバカ……。 だってさー、いかにも
eof <- hIsEOF f if eof then .... ↓ if hIsEOF f then ....
ってできそうじゃない?! できると思うでしょ?! でもできないんだよなー。
なんでいきなり UNIX コマンドかというと、 自分で実際に使えるものが一番インセンティブが働くからです。 つまらん計算したって全然面白くないっす!
そういうわけでとりあえずの目標を rd2html のサブセットと決めました。
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.