Hatena::Grouphaskell

mokeheheの日記

2009-11-25

ライフゲーム

リハビリがてら、Haskellでなんか書きたくなってきた。ライフゲームを、できればgolf的に短く書きたい:

import Data.List (transpose, tails)

-- rule for Conway's Game of Life
conway 0 3 = 1
conway 1 2 = 1
conway 1 3 = 1
conway _ _ = 0

step rule edge m = opmtx rule m $ neighbor edge m
neighbor edge m = opmtx (-) (sum3x3 $ edge m) m
sum3x3 = verthorz $ foldl1 (opmtx (+)) . take 3 . tails
opmtx = zipWith.zipWith
verthorz f = transpose.f.transpose.f

-- boundary condition
wrap = verthorz (\m -> [last m] ++ m ++ [head m])
clamp = verthorz $ map (\s -> [0] ++ s ++ [0])


-- how to execute: runhaskell LifeGame.hs < test.txt
{- test.txt:
.....
..*..
...*.
.***.
.....
-}

main = getBoard >>= runGame 100 conway wrap

getBoard = getContents >>= return . map (map c2i) . lines
runGame n rule edge = mapM_ (\m -> dispBoard m >> putStrLn "====") . take n . iterate (step rule edge)
dispBoard = mapM_ putStrLn . map (map i2c)

c2i '*' = 1
c2i _   = 0

i2c 0 = '.'
i2c 1 = '*'

point freeスタイルには徹底できないなー。できればグラフィカルにしてUIとかもつけてみたいね。

トラックバック - http://haskell.g.hatena.ne.jp/mokehehe/20091125

2009-11-24

bloxorz

via Haskellでできたゲーム - 落書き、時々落学

YouTube- bloxors: an OpenGL Logic Game written in Haskell

WindowsではOpenGLが入ってないのでコンパイルはできてない。ソースを見る限り、管理している状態はゲームとブロックしかなくて、updateでキー入力を見て状態を更新、renderで描画、というふうにまっとうに処理してるように見える。

トラックバック - http://haskell.g.hatena.ne.jp/mokehehe/20091124

2009-11-20

Haskellナイト

f:id:mokehehe:20091121071539j:image:right

Haskellナイトに行ってきた。Tシャツ目当てで「Real World Haskell」と、300円安いというので「プログラミングHaskell」を買ってみた。

第一部には「入門Haskell」を書かれた向井さんも出ていた。Haskellに飽きたってのと、別にHaskellで書いても他のCとかで書いても同じってのと、難しい問題はHaskellで書いても難しいってことを言っていた。悲しいけど、なんとなく言いたいことはわかる。

モナドの話とか。山本さんが「モナド型クラスの一種」のような説明をされて、わかったような気になったりならなかったり。

Typeclassopediaは良いという話なので読んでみよう。

第二部のHaskellゴング、私的にはtanakhさんのOpenGLを使ったプレゼンツールというのが特に気になった。DOMに丸投げしてるJavaScriptでプレゼンツール作るのとは全然労力違うんじゃ…と思ったけど、パワポみたいに現代風のページ遷移のエフェクトの付いたプレゼンツールになっていてすげーと思った。

あとkeqhさんのforkIOを使ってGHCiからSDLの窓と通信するのとか、酒井さんの自然言語をラムダ式で解釈する体系PTQのHaskell実装とかmaoeさんのParsec3でパース中にIOで別ファイルを読み込んで処理できるとか面白かった。

今度4月にSimon Peyton-Jones氏が来日されるということなので、そのときにまたこういう会があったらなんか発表できるように仕込んでおこう。

トラックバック - http://haskell.g.hatena.ne.jp/mokehehe/20091120

2009-11-09

マンデルブロ集合

f:id:mokehehe:20091109152525p:image

なんの凝ったものもなく、Haskellでマンデルブロ集合を書いてみる。結果は標準出力にppm3で吐き出す:

d

複素数の長さの計算を間違って、

squareMagnitude c = (realPart c ** 2) * (imagPart c ** 2)  -- '+' と '*' を間違えた

としたら変わった絵ができた:

f:id:mokehehe:20091109152522p:image

概観は変わらないけどトゲトゲしたものになった。どういうこっちゃ!?面白い!

トラックバック - http://haskell.g.hatena.ne.jp/mokehehe/20091109

2009-11-03

haskgame

Haskellゲームライブラリ、SDLをラップしてとのこと

http://hackage.haskell.org/package/haskgame

どんなもんだろう?説明がないからよくわからないけど、定義を見る限り特に何もなさそうな。

トラックバック - http://haskell.g.hatena.ne.jp/mokehehe/20091103

2009-11-01

Haskell関連イベント目白押し、盛り上がってまいりました!

Haskellナイト、ゴングに出てみたいからなんか発表できるネタないかと考えてたんだけど、全然思いつかないのでしかたがないから観戦でいいかと思って申し込んでみると、整理番号20番とか…大丈夫か?

nobsunのつぶやきを見てたら、eyasuyuki氏のRTで

Twitter / ENDO Yasuyuki: Haskellゴング応募ないなあ。 http://b ...

Twitter / ENDO Yasuyuki: Haskellゴング応募ない。Haskellerの勇 ...

10/22なんで1週間以上前のつぶやきだけど、うーんやっぱなんか発表してみたいなぁ。

HIMA & 忘年会 - あどけない話 忘年会出てみたいなぁ

トラックバック - http://haskell.g.hatena.ne.jp/mokehehe/20091101

2009-10-29

本「プログラミングHaskell」

プログラミングHaskell
Graham Hutton
オーム社
売り上げランキング: 32411

11/11発売予定らしい。\2,940ならまあ許容範囲。

でもオーム社で検索してもページが出てこない。

追記:プログラミングHaskell|Ohmsha

トラックバック - http://haskell.g.hatena.ne.jp/mokehehe/20091029