タグ

2012年8月23日のブックマーク (7件)

  • 第25回 Haskell流の例外処理を学ぶ

    Haskellの静的な型検査は強力ですが,プログラムの実行時に起こり得るすべての問題を解決できるわけではありません。例えば第5回で指摘したように,依存型を持たない現在の標準Haskellでは,検証できる問題の範囲に限界があります。また,FFIを使って呼び出す外部関数には,Haskellの型検査は行き届きません。実行前に静的に解決できない問題は,実行時に動的に解決する必要があります。このための手段を提供するのが例外処理です。 例外処理については,これまで何度か断片的に説明しましたが,全体像をまとめて解説したことはありませんでした。次回以降にFFIと例外処理との関係について説明する前に,今回はHaskellの例外処理についてきちんと説明しておきましょう。 例外処理の仕組みは,GHC 6.10に収録されるbase 4.0パッケージ以降で大きく変更されます。baseパッケージはデファクト・スタンダ

    第25回 Haskell流の例外処理を学ぶ
  • いまさらxargsの便利さを主張してみる — ディノオープンラボラトリ

    タイトルの通りですが、xargsコマンドの便利さを紹介する記事を書いてみました。xargsは私が大好きなコマンドの一つで、標準入力から渡されたファイル名などを引数とみなして、別のコマンドの引数として起動するというものです。 例えばfindで見つけたファイルを全部削除したい場合、xargsなしでも下記のように書くことができます。

    joan9
    joan9 2012/08/23
  • https://raw.githubusercontent.com/mori-dev/anything-hasktags/master/anything-hasktags.el

  • Haskellのエラー処理とMonadCatchIOの落とし穴 - 純粋関数型雑記帳

    (この記事はHaskell Advent Calendar jp 2010のために書かれました) Haskellではエラー処理に例外が用いられます(MaybeモナドやErrorモナドも用いられますが、ここでは例外に焦点をあてます)。 例外インターフェースの話 Haskellにも、例外を扱うためにtry, catch, finallyなどが用意されています。他の多くの言語ではこれらは構文として用意されますが、HaskellではIOモナドを引数にとる関数になっています。 try :: Exception e => IO a -> IO (Either e a) catch :: Exception e => IO a -> (e -> IO a) -> IO a finally :: IO a -> IO b -> IO a tryはIOアクションを引数にとり、それを実行した結果が正常に値を返

    Haskellのエラー処理とMonadCatchIOの落とし穴 - 純粋関数型雑記帳
  • Haskellによるライブコーディングを配信『Haskell Live』 | 100SHIKI

    マニアックだが、プログラミングがらみは紹介せざるを得ませんな・・・。 というわけでHaskell LiveではHaskellのライブコーディングを配信しているようだ。 まだ第一回が始まったばかりだが、15分ほどをかけてチェスのエンジンを開発する様子を見せてくれる。 YouTubeの動画ではあるが、ちと文字が小さいのでフルスクリーン&最高画質で見ることをおすすめする。 またソース自体はGithubにあるのであわせて見るといいだろう。 こうしたライブコーディングのサイトはもっと増えるといいですな。

    Haskellによるライブコーディングを配信『Haskell Live』 | 100SHIKI
  • Haskell Live: A Live Coding Adventure

    Episode 2: Time To Refactor Wherein we review the code from our last episide, fix some bugs, alleviate some code smells, refactor some things to improve clarity and reduce redundancy, and introduce the concept of failed board parsing with error reporting. I've also posted a list of the tools I use to set up my environment. github Get the code! comment Discuss this episode on GitHub Issues! info We

  • 高速WebサーバMighttpdのアーキテクチャ | IIJの技術 | インターネットイニシアティブ(IIJ)

    IIJ-II技術研究所では、2009年の秋からMighttpd(mightyと読む)というWebサーバの開発を始め、オープンソースとして公開しています。この実装を通じて、マルチコアの性能を引き出しつつ、コードの簡潔性を保てるアーキテクチャにたどり着きました。ここでは、各アーキテクチャについて順を追って説明します。 ネイティブ・スレッド 伝統的なサーバは、スレッド・プログラミングという手法を用いています。このアーキテクチャでは、1つのコネクションを1つのプロセスかネイティブ・スレッドが処理します。 このアーキテクチャは、プロセスやネイティブ・スレッドを生成する方法で細分化できます。「プール」方式では、あらかじめ複数を起動しておきます。例としては、Apacheのpreforkというモードが挙げられます。「都度」方式では、コネクションを受け取るたびに生成します。このアーキテクチャの利点は、制御を

    高速WebサーバMighttpdのアーキテクチャ | IIJの技術 | インターネットイニシアティブ(IIJ)