history

青木日記 RSS

<前の日 | この月 | 次の日>

2003-02-18

もうだめだ

ああああ、また 20 時間も寝てしまった。 どうしてこういうことになるんだ。 おれのバカバカバカ〜。

有名な GC 本

そうです、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" を 買ってみました。

Haskell head

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 コマンドシリーズ

なんでいきなり UNIX コマンドかというと、 自分で実際に使えるものが一番インセンティブが働くからです。 つまらん計算したって全然面白くないっす!

そういうわけでとりあえずの目標を rd2html のサブセットと決めました。

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS