タグ

ブックマーク / mokehehe.hatenadiary.org (4)

  • Haskellで勘違いしてたこと - imHo

    ghcでビルドするときに-Wallをつけてwarningをすべて表示するようにして、いまさらにして初めてわかったこと: caseでotherwiseを使うのはまちがい nt = case pltype of SmallMonao -> SuperMonao SuperMonao -> FireMonao otherwise -> pltype -- まちがい! otherwiseはガードのときに使う、というか単にotherwise = Trueと定義されてるだけなので、シャドウされた変数パターンとして捕捉されてるだけだった。正しくはワイルドカードを使って nt = case pltype of SmallMonao -> SuperMonao SuperMonao -> FireMonao _ -> pltype caseをRubyやSchemeのcaseと混同して、束縛された名前でマッチ

    Haskellで勘違いしてたこと - imHo
    r-west
    r-west 2009/05/21
    -Wallつけよう
  • Haskellで敵を踏み潰したりするゲームを作ってみた - imHo

    中途半端だけど、現状の動画をupしますた。 http://www.nicovideo.jp/watch/sm4842293 ソースは http://svn.coderepos.org/share/lang/haskell/nario に置いてあります。 現状 22ソース、1605行 「関数型言語」って身構えることは全然なくて、Cとかで組むのとあまり変わらないよ、っていうかよっぽど楽だよ(パフォーマンスの細かな調整を考えなくてよければ) 存在型でオブジェクトごとにソースを分けたので、敵やエフェクトなどがかなり書きやすくなった Haskellでソースの循環 import ができない 2006-06-27 で回避、しかしメンドイ 結構作り散らせる、引数や型の内容を変更すると関連する部分のエラーを全てコンパイラが見つけてくれるので、かなり楽。修正すれば型に関する実行時エラーは起きないので気分的にも

    Haskellで敵を踏み潰したりするゲームを作ってみた - imHo
  • Haskell で○トリス作った - imHo

    全部で672行(長い…) フォント表示は 502 Bad Gateway のストロークフォント表示 Haskell は純粋関数型言語で値の代入ができない、ので更新処理は前回の状態を受け取って次の状態を返す関数を作って、そいつを IORef で保持する、という感じ ゴーストの表示とか落下速度の変化とかブロックが消えるときの間とか左右移動のリピートとかゲームオーバー時の演出とか多少細かいところを入れてあります(結構こういう細かいところがメンドイと思うので) カーソルキーがわからなかったので操作は jkl に割り当ててあります q で終了 作って思ったこと: Haskellの利点: ポインタとかメモリ管理とか悩まなくていい。速度は今のところ考えてもない コンパイル時の方チェックが厳しいので、実行時のエラーの心配をしなくてすむ モナドとか考えなくても全然いける 欠点: 作り散らかせない。コーディン

    Haskell で○トリス作った - imHo
  • Haskellでゲームを作れ - imHo

    コナミ植原氏: この前の「MGS4」のセッションで紹介したスクリプト言語(GCL)は、実は私が作ったものなんです。 http://www.watch.impress.co.jp/game/docs/20080916/cedec_dev.htm なに?この人 GNU Common Lisp 作った人なの!?と思ったら違って、Tcl ベースの独自言語だとのこと。 コナミ植原氏: 私も関数型言語は、確かに「モナディウス(Haskellで作られたグラディウス似のフリーソフト)」の時代から追いかけてはいたんですけど、Haskellをいきなり書けっていわれると、たぶんプログラマの9割は泣いて頭を下げて「すいません、何とか考え直してもらえませんか」って来るような気がします(笑)。 http://www.watch.impress.co.jp/game/docs/20080916/cedec_dev.ht

    Haskellでゲームを作れ - imHo
    r-west
    r-west 2008/09/19
    wktk
  • 1