タグ

2011年8月26日のブックマーク (6件)

  • Scoped type variablesが必要になるとき - maoeのブログ

    whereの中の局所定義に型シグネチャを付けると Couldn't match type `a' with `a1' ...といわれて型検査を通らない!という経験はありませんか?これを直すには字句的スコープを持つ型変数が必要です。この機能はScopedTypeVariablesという言語拡張によって有効になります。 局所定義された式に型シグネチャを付けられない たとえばこんな単純な例を考えましょう。 rev :: [a] -> [a] rev xs = ys where ys = reverse xs 関数revは単にreverseの別名です。reverse xsの結果をwhereでysに束縛し、それを返しているだけです。このysの型はもちろん[a]な訳ですが、どういうわけか型シグネチャを書くと型検査で弾かれます。 rev :: [a] -> [a] rev xs = ys where y

    Scoped type variablesが必要になるとき - maoeのブログ
    ruicc
    ruicc 2011/08/26
    Haskellの型シグネチャは暗黙に量化される
  • Haskellの文法(分岐編) - あどけない話

    僕が Haskell を学び始めた頃、Haskell の文法はすんなりとは頭に入ってきませんでした。もともと僕はプログラミング言語の学習能力が低いので、僕だけかもしれませんが、「はじめからこう言ってもらえれば分かったのにぃ」ということを書きます。 はじめの一歩 分岐は case で書きます。以下に Maybe a に対する例を書きます。 case mx of Just x -> ... Nothing -> ... 念のため、Maybe a の定義も見てみましょう。 data Maybe a = Nothing | Just a 列挙されているデータ構成子を case に列挙できることが分かるでしょう。このように、case でマッチできるのは、データ構成子で表現されたパターンになります。 ワイルドカード たとえば、以下のような型を定義したとします。 data Foo = A | B | C

    Haskellの文法(分岐編) - あどけない話
    ruicc
    ruicc 2011/08/26
    「GHC のオプションには、必ず -Wall を付けましょう」
  • イギリス暴動の裏にある鬱屈と絶望について

    ロンドンその他都市のあの「愚者の祭り」から1週間が過ぎて、あの月曜日の事情が少しずつ分かってきた。5年以上ロンドンに住んでいる者としてあれこれ考えることも多かったし、諸事情で「暴徒」のおかれた環境について少し知る機会もあったので、少し書いておきたい。 あの日起こったことは何だったのかこれについては、無軌道な若者の暴走と言うことで概ねコンセンサスは取れているように思う。以下のtogetterは現状ロンドンで理解されていることに近い。 http://togetter.com/li/172491 警察が、最初の暴動の抑制に失敗したことで、「今なら何をやっても大丈夫」という無礼講的なお祭り騒ぎが一挙に拡大したと言うことなのだろう。周囲の興奮と燃えさかる炎に当てられて、「乗るしかない、このビックウェーブに!」とばかりに舞い上がってしまった子供が相当数いたであろう事は間違いない。(ロンドンで逮捕された

    イギリス暴動の裏にある鬱屈と絶望について
    ruicc
    ruicc 2011/08/26
  • Release Notes for MongoDB 2.0 — MongoDB Manual

    General InformationAll DocumentationRealm DocumentationDeveloper Articles & TopicsCommunity ForumsBlogUniversity

    Release Notes for MongoDB 2.0 — MongoDB Manual
  • 良いプログラマを目指すなら「Concurrent Progrmming in ML」は今すぐ読むべき - osiire’s blog

    (いえ、どうせ前から広めたいとは思ってたので、ちょっと便乗。) これからマルチコア当り前時代になるし並行処理を扱えるようになりたい。でも並行処理って難し過ぎる。そんな諸氏に朗報です。簡単かつ安全にマルチスレッドを扱える方法があります。 それは、メッセージパッシングによるスレッド間情報共有です。Erlangのようなアクターモデルと言った方がピンとくる人もいるかもしれません。メッセージパッシングの世界にはロックもシグナルも登場しません。あるのは、スレッド間で共有する通信路だけです。なぜ通信路だけで、排他制御が出来るのでしょうか?新しいスレッドを作って、そのスレッドが持つ文字列を読み書きするメッセージパッシングスタイルのプログラムを見れば一目瞭然です。 (* 細かい事は若干単純化したサンプルプログラムです。*) let start_server init_msg = let ch = (* 通信

    良いプログラマを目指すなら「Concurrent Progrmming in ML」は今すぐ読むべき - osiire’s blog
  • Why Haskell is Kinda Cool

    I’ve been using Haskell for a while, trying to apply it to large-ish projects. Learning it has been time consuming, but rewarding. I’ve stuck with it this long because: most classes of bugs are caught at compile time, due to strict type system and pure code (immutability) – code tends to work right the first time it’s run! haskell types are very powerful: using them to design and describe software

    ruicc
    ruicc 2011/08/26
    カーソルは視線誘導かと思ったが違うみたいというか見づらい。