history

青木日記 RSS

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

2003-02-21

Haskell head

http://www.rubycolor.org/maki/d/200302b.html#19_t1

あ、高橋さん版の head が。 Haskell の遅延評価ってカッコいいですよね。 hGetContents とかも、ファイルの中身を全部読んでいるように見せかけて、 実はアクセスしたときに初めて読んでくれるという……。 mmap とちょっと似てるかな。

Haskell tail

あ、コンパイルしたら端末からの入力でも動きました。 ということは runhugs が原因なのか。なんでだろうなあ。 もしかして raw モードになってるとかそういう話か? (それはそれで嫌だな)

unsafePerformIO

うっ……なんか名前からしてヤヴァそうな…… ^^;;;

そういえば Gentle ... にもちょこっとだけ 存在がほのめかしてありましたね。 デバッグ用として、ルール外で IO する裏技が。

Haskell tail (2)

をを! 山下さん版 tail カコイイ! コードのコア部分はこんなかんじ。

doTail :: IO String -> IO ()
doTail ios
 = do { cs <- ios
      ; putStr $ unlines $ reverse $ take 10 $ reverse $ lines cs
      }

文法まわりは設定次第で他にもいろいろ書きかたがあるらしい。

うーむ、慣れるとずいぶんきれいに書けるんだなあ。 というより今回はアルゴリズムの発想が悪かったか。 全部オンメモリにしない点に無駄にこだわりすぎた。

ちなみに

... $ take 10 $ ...

というふうに関数を 1 引数分だけ適用できるとこもなかなか凄い。 第 2 引数だけ後から与えて返り値を取れる。

本日のツッコミ(全4件) [ツッコミを入れる]
nobsun (2003-02-21 23:51)

拙のtailコードなども御観賞ください(って、そんな大したもんじゃないけど、らしくは書いてます)。http://www.sampou.org/nobsun/journal/?20030220

arton (2003-02-23 00:48)

出たみたい。
http://www.ascii.co.jp/books/detail/4-7561/4-7561-4252-4.html
#parameterとargumentの違いをこの本で知ったというのは内緒だ

きた (2003-02-23 15:01)

http://www.loveruby.net/~aamine/ja/tdiary/20030221.html#p04
の</a>がおかしなことになってますよ.

あおき (2003-02-23 16:07)

ありがとうございます。今直しました。
どうやらプリプロセッサが狂ってたみたいです。

名前
メールアドレス

<前の日 | この月 | 次の日>
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