タグ

ブックマーク / maoe.hatenadiary.jp (8)

  • HIMA' #3: Arrow(と随伴関手) - maoeのブログ

    日曜日に3回目のHIMA'を開きました。今回のテーマはArrowとid:itto100penさん一押しの随伴関手でした。ベースとなるテキストは関数プログラミングの楽しみを使いました。 進行は僕が10章「アローと計算」を読み上げ、疑問点が出てきたところでid:msakaiさんとid:itto100penさんが解説するという形式で進めました。以下勉強会中にメモした記録+αです。 記録 pure = arrでOK? OK pureだとApplicativeと被ってしまう 「入力とは独立した静的構成要素を持つ計算とは何か」 Stateの例とか? p.237で触れられる構文解析コンビネータがまさにこの例 Arrow記法はHaskell 2010に含まれない {-# LANGUAGE Arrows #-}が必要 計算の概念 状態変換子 このStateはカリー化してflipするとStateモナドと同等

    HIMA' #3: Arrow(と随伴関手) - maoeのブログ
  • 再帰のパターン - maoeのブログ

    Fun of Programming (Cornerstones of Computing)の3章「Origami programming」の冒頭にはこんな事が書かれている。 One style of functional programming is based purely on recursive equations. Such equations are easy to explain, and adequate for any computational purpose, but hard tu use well as programs get bigger and more complicated. In a sense, recursive equations are the 'assembly language' of functional programming, and

    再帰のパターン - maoeのブログ
  • HaskellでWebAppの開発に必要なN個のこと - maoeのブログ

    あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずHaskellについて知っていることを書いた。 ← ここまで引用。 パッケージマネージャ Cabal 1.18を使おう。以上。 アプリケーションサーバ WSGIとかRackとかの流れでHaskellでもwebアプリのサーバインタフェースを統一化する動きがいくつかあった。その中で一番市民権を得たのはwaiと呼ばれるものだ。 ただ、残念なことにHaskell界でここ数年ずっと続いているI/Oストリーミングライブラリ戦争の決着がついていないため、統一化の状況は思わしくない。waiはconduitというライブラリに依存しているが、フレームワークによっては別のI/Oストリーミングライブラリを基盤にしている。 現状の3

    HaskellでWebAppの開発に必要なN個のこと - maoeのブログ
  • 2013年8月現在のHaskell開発環境 - maoeのブログ

    以前はHaskell Platformを使っていたのだけど、Cabalの依存関係ソルバがあまり賢くなかったこともあり、いわゆるdependency hellに陥ることが多かった。それからというものHaskell Platformを使わない環境を使っている。OS Xでは公式のインストーラやらHomebrewやMac Portsなど幾つかの方法が用意されているが、こんな方法もあるよということで紹介してみよう。 GHCのインストール GHCのリリース版は自分でビルドしない。時間が掛かるから。インストーラは使わずにtarball版を使う。これはインストール先を自分で指定したいため。 tar zxvf ~/Downloads/ghc-7.6.3-x86_64-apple-darwin.tar.bz2 cd ghc-7.6.3/ ./configure --prefix=/usr/local/ghc/

    2013年8月現在のHaskell開発環境 - maoeのブログ
  • やさしいFunctional reactive programming(Event編) - maoeのブログ

    前回はFRPのBehaviorとEventという重要な概念と、Haskellでの代表的なライブラリを簡単に紹介しました。今回は紹介したものの中からreactiveというライブラリを取り上げます。 なお、reactiveを理解するにあたってLess Sugar/More Meat » Blog Archive » Introducing Reactive: Eventsというチュートリアルがとても役に立ったことを書いておきます。この後出てくる解説も冒頭部分はこのチュートリアルからとってきています。それと、動作環境はLinux上のGHC 6.12.1でコンパイルしたreactive 0.11.4を使っています。 reactiveの特徴 reactiveはConal Elliottが作った最新のFRPライブラリで、ライブラリのユーザ側から見た大きな特徴は、Arrowを使わない古典的FRPをFun

  • The Expression Problem - maoeのブログ

    この記事はHaskell Advent Calendar jp 2010 : ATND向けに書いたものです。 最近、ふらふらとネットの波をさまよっていたら、Channel 9でRalf LaemmelさんがHaskellの型クラスを解説する動画を見つけました。これです。 C9 Lectures: Dr. Ralf Lämmel - Advanced Functional Programming - The Expression Problem | Going Deep | Channel 9 C9 Lectures: Dr. Ralf Lämmel - Advanced Functional Programming - Type Classes | Going Deep | Channel 9 The Expression Problemと呼ばれるプログラミングにおける古典的な問題をネタに

    The Expression Problem - maoeのブログ
  • プログラミングCoqの2章をHaskellに翻訳してみた - maoeのブログ

    皆さん、小悪魔CoqチュートリアルことプログラミングCoq読んでいますか?僕は大変楽しく読ませていただいています。今日第2章にあたるProof-editing mode であそぼうが公開されました。今回はCoqの証明支援の側面がよくわかる章になっていて興味深いのですが、扱っている命題はまだ簡単で、Haskellでも十分表現できそうです。 というわけでHaskellに翻訳してみました。 今回、Haskellの拡張をいくつか使っています。 Coqの表記と対応関係を取るためにExplicitForAll(Rank2Typesで自動的に有効になる) prop1で、forall付きの型を引数に取る関数の型を表現するためにRank2Types orとandを表す型を演算子で表すためにTypeOperators こうしてみてみると、Coqが自動的に作った仮定がHaskellにおける仮引数に対応づけられて

    プログラミングCoqの2章をHaskellに翻訳してみた - maoeのブログ
  • 遅延I/Oとメモリリーク - maoeのブログ

    先週の土曜日にReal World Haskell読書会に行ってきた。とても有意義な読書会だったのだけど、遅延I/Oとメモリリークに関して腑に落ちない点があったので書いてみる。 遅延I/Oの例 Real World Haskell 7.4.1節の注意マークのところ、邦訳版から引用すると、 上の例で、inpStrを使った一箇所(つまりprocessDataを呼んだところ)を過ぎてから、inpStrを捕まえようとすると、プログラムのメモリ効率が失われてしまいます。 という部分が気になっている。 を持っていない方のために、わかりやすいサンプルプログラムを例に挙げる。Haskellではテキストファイルを読んでそのまま出力するプログラムをこう書くことができる。 ここで注目すべき点は、BS.readFileは遅延I/Oとなっているので、実際に読むファイルがメモリに載らない大きなものであったとしても、

    遅延I/Oとメモリリーク - maoeのブログ
  • 1