タグ

ブックマーク / hiratara.hatenadiary.jp (12)

  • Haskell入門という本を書きました - Pixel Pedals of Tomakomai

    Haskell入門 というを書きました。まだ店頭で買うことはできませんが、amazonでは予約を開始しています。また、電子版も早いうちに出ると聞いているので、そちらもあわせてお求め下さい。技術評論社さんのサイトではサンプルのpdfも読むことができます。 Haskellには すごいH というとても良い教科書がすでにありますが、「アプリケーションを作って楽しむ」という観点から書かれたも欲しいなということを常々感じていました1。すごいHでHaskellの考え方やプログラムの組み方は学べますが、例えば、プロジェクトを作成して開発を始めるにはどうするかであったり、必要なライブラリをどこから探してどのように自分のプロジェクトへ組み込むのかといった、開発に必要な基的な事項は自分で学ぶ必要があります。今回執筆した Haskell入門 ではとにかくHaskellでアプリケーションを作ることにフォー

    Haskell入門という本を書きました - Pixel Pedals of Tomakomai
  • ペアプロの新ジャンル「ぶつかり稽古」の面白さ - Pixel Pedals of Tomakomai

    秋のエンジニアぶつかり稽古 2013で横綱級エンジニアのペアプログラミングを見てきたのだけど、これが想像以上に面白かった。他のイベントでもドンドンやるべき。 「ぶつかり稽古」はあんちぽさん(@kentaroさん)が考案した新しいエンターテインメントペアプログラミングのスタイル。単体テストを書く"受ける側"と、そのテストを通すために実装する"ぶつかる側"が交互にコードを書いて行き、聴衆はそれを観覧する。一種のライブコーディングではあるのだが、2人が実装に関わるため、事前の想定と違う方向にコーディングが進み易く、実装者のよりリアルな問題への対処方法を観察することができる。その人が普段どのようにコードを書いているかも、より正確に想像しやすい。参加者もテストを通す側の立場に立って内容を考えられるので、自分の実装と参加者の実装の癖の違いを楽しむこともできる。ぶつかる側だった@__kanさんは懇親会で

    ペアプロの新ジャンル「ぶつかり稽古」の面白さ - Pixel Pedals of Tomakomai
    yuiseki
    yuiseki 2013/11/24
    片方がテストを書き、もう片方がそれに通るようなコードを書く
  • I/Oストリーミングライブラリの実装の基礎 - 前編 - Pixel Pedals of Tomakomai

    conduitやpipesなどのストリーミングライブラリの実装は結構わかりにくい。Pipes to Conduitsという一連のエントリが分かりやすい解説なのだが、それでも序盤からFunctorやFreeモナドを駆使していてハードルが高めな印象を受ける。 理解するには自分で実装するのが一番の近道だろうから、このエントリでごく簡単なストリーミングライブラリを実装してみよう。ストリーミングライブラリではI/Oを扱うのが目的であるため、来であればモナドを扱えるように実装しなければ意味がないのだが、ストリーミングの基的な仕組みとしてはモナドは重要ではないので、ここでは純粋な値のみを扱うストリームを作成する。 ストリームを表す型 ここが一番重要かつわかりにくい部分だと思われる。今回の実装では、「入力」「出力」「結果」の3つの型をストリームで利用する。が、「出力」と「結果」の違いとはいったいなんな

    I/Oストリーミングライブラリの実装の基礎 - 前編 - Pixel Pedals of Tomakomai
    yuiseki
    yuiseki 2013/10/30
  • 「論理と計算のしくみ」が大変ためになった - 北海道苫小牧市出身の初老PGが書くブログ

    読み終わったので感想です。他の方々からも良書だ、良書だと勧められましたが、結論から言うとやはり買いです。 論理と計算のしくみ 萩谷 昌己 西崎 真也 前半は論理学から話を初めてゲーデルの不完全性定理までを論じます。後半はλ計算と型理論についての内容です。カリー・ハワード対応がわからなくてもいいのであれば、後半のλ計算の部分だけ読むこともできます。 読み切れば、例えば、物のプログラマはHaskellを使うの連載に出てくる次のような単語の意味は理解できるようになるでしょう。 reduction call-by-name call-by-value Weak Head Normal Form 型推論 依存型 多相型 他にも以下のような聞いたことあるけどなんだろこれって知識が補完されます。 命題論理、述語論理、様相論理、時相論理、直観論理 ゲーデルの不完全性定理 チューリングマシンの停止性問題

    「論理と計算のしくみ」が大変ためになった - 北海道苫小牧市出身の初老PGが書くブログ
    yuiseki
    yuiseki 2013/09/21
  • "圏論とかモナドなんて簡単だからscalaを使って説明してみた"を検証してみた - Pixel Pedals of Tomakomai

    射っていうのはscalaだと単なる関数だし、関手はmap、モナドはflatMapなだけです。これのどこが難しいというのでしょう。 圏論とかモナドなんて簡単だからscalaを使って説明してみた 内容について考えてみよう。 圏の定義? trait Cat { type A type B def f:A => B } trait Cat { type A type B type C def f:A => B def g:B => C def f_g:A => C = f andThen g } 圏論とかモナドなんて簡単だからscalaを使って説明してみた ここで定義されているCatはただの1の射であって圏とは言い難い。hom setを定義したというのならまだわかるが、ScalazのHomとは似ているが違う定義だ。具体的に言うと、Homは1の射fではなく、射を表す型であるCが定義されている。

    "圏論とかモナドなんて簡単だからscalaを使って説明してみた"を検証してみた - Pixel Pedals of Tomakomai
  • 「プログラム意味論」が面白かった - Pixel Pedals of Tomakomai

    ずーっと前から読みたかったけど絶版になってしまって読めなかったが復刊。 プログラム意味論 (情報数学講座) 横内 寛文 最初はラムダ計算とコンビネータ理論から入り、3章で領域理論について解説する。posetの取り扱いとか最小不動点定理とかまともに学んだことなかったので、すごくためになった。 そして型付きラムダ計算を元に関数型言語の操作的意味論と表示的意味論の比較。正格性の話にもページを割いている。この辺もあまり区別できずにいたのでありがたい解説。 5章は圏論で、随伴は出てこないけど必要な話はだいたい入ってる印象。6章は逆極限法で、型無しラムダ計算の意味論に必要な同型である X≃X^X を満たすXを調べる。圏論で一般化して始代数の存在の話とか最小不動点定理の言い換えとか、ここも非常に面白い内容。 最後の章で、CCC(Cartesian Closed Category)で型無しλ計算の意味論

    「プログラム意味論」が面白かった - Pixel Pedals of Tomakomai
  • 「プログラミング言語の基礎概念」を読んだ - Pixel Pedals of Tomakomai

    学部生向けなのでさくさく読めてよい。 プログラミング言語の基礎概念 (ライブラリ情報学コア・テキスト) 五十嵐 淳 カバーしているのは操作的意味論*1で、序盤から中盤にかけて単純な自然数の和積算の意味論をベースに徐々に盛りつけてMLライクな言語の意味論を作り上げる。letや関数、再帰関数の意味をどう与えることができるのかはこの辺りを読めば分かる。 後半これに型をつけていくのだが、型を仕様記述言語として説明しているのは面白かった。型のない言語にそれとは別で型付けの意味を与えたときに、「評価できない式(実行時エラーが出る)⊂型付けできない式」ということを述べている。つまり、型付けできればエラーは起きない、と。そして、型付けの仕方を工夫することでこれらの集合がイコールになるよう近づけて仕様記述言語としての精度を上げることができる、という文脈で多相型を持ってきている。 最後は型推論を解説しているが

    「プログラミング言語の基礎概念」を読んだ - Pixel Pedals of Tomakomai
    yuiseki
    yuiseki 2012/09/09
  • 函数プログラミングで集いに来ました - Pixel Pedals of Tomakomai

    函数プログラミングの集い 2011 in Tokyo に来てます。途中退出しますが、居る間内容を適当にメモります。会場はIIJさんです。毎度のことながらすばらしい会場。 この会は、神田でICFPという大きな国際的な学会が日で行われるのにちなんでいるそうです。普段は「この言語は糞だ」みたいなことを言っている方も今日は休戦でお願いしますとのこと。 ハッシュタグは#fpm2011 です。ustream はこちら。 関数プログラミングの道しるべ / @kazu_yamamoto さん 今日は時間が短いので、今日の内容を理解してもらえるとは微塵も思ってない 入り口で引き返さずに、山へ登ってみて欲しいという思い Twitter での市場調査 → 関数 = 数学 = 怖い。関数 = アカデミック = 役に立たない Functional の訳を「実用的」とすべき。Functional Programin

    函数プログラミングで集いに来ました - Pixel Pedals of Tomakomai
    yuiseki
    yuiseki 2011/09/21
  • git rebaseとgit mergeはともだち こわくないよ - Pixel Pedals of Tomakomai

    例えば、以下のようなコミット履歴があるとします。 A---B---C---D masterここで git rebase -i HEAD~3 をして、 コミットB を E に書き換えたくなったとします。このとき、rebase -i によって履歴を書き換えてしまうと、以下のようにリポジトリからB〜Dのコミットは消滅してしまうと思っている人も居るのではないでしょうか。 A---E---C'---D' master確かに、Gitがこのような動作をするのであれば、rebase後に元の状態へ戻すことは到底困難であるように見えます。しかし、正確に書けば、実際のレポジトリの状態は以下のようになります。 E---C'---D' master / A---B---C---D実はコミットA〜Dの一連のコミットは手つかずで残っており、「master」というラベル*1が新たな枝に付け替えられただけなのです。よって、

    git rebaseとgit mergeはともだち こわくないよ - Pixel Pedals of Tomakomai
    yuiseki
    yuiseki 2010/09/01
  • MySQLにおける、GeohashとGeometry型による検索の比較 - Pixel Pedals of Tomakomai

    先日のベンチマークが失敗だったので、改めて自前のスクリプトでベンチとりました。 後、id:kokogiko さんにGeometry型 × SPATIAL インデックスはどーよってツッコミをもらったので、そちらも一緒にベンチをとります。 Geometry型のテーブル定義 前回のGeohashのテーブルを一つ。SPATIALインデックスはMyISAM専用なので、そのテーブルを一つ。後、InnoDBでインデックス貼っていない物を用意しました。InnoDBでno-SPATIALなインデックス張った物も試したかったんですが、手元の環境だとMySQLが落ちてしまうっぽいので今回は省略しました。 CREATE TABLE location ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, geohash VARCHAR(10) NOT NULL

    MySQLにおける、GeohashとGeometry型による検索の比較 - Pixel Pedals of Tomakomai
    yuiseki
    yuiseki 2010/08/26
  • 2008-08-30

    電源を確保できたので、*1今日もログ取っておきます。ちなみに、チケットを持ってくるのを忘れましたorz。当日券買ったので二重払いとなりましたが、Larryさんの旅費と言うことで(笑)*2。 *1:結局、電源は途中からお借りしました。助かりました! *2:チケット1001枚売れたらしいので、自分が重複で買わなければ1000枚ちょうどだったようです。 続きを読む まず、スタッフの皆様、大変お世話になりました。毎年のことなのですが、LLイベントは過酷なのにあっという間に終わると言う印象を持っています。今年も、11時間やったとは思えないほど時間が経つのが早く、楽しい時を過ごさせて頂きました。後、Larry Wallさんも長旅お疲れ様でした。またお話が聞けて嬉しかったです。 今回は、「LLでアート」のセッションがとても面白かったです。特にライブコーディングは感動もの。LLってこういう使い方もあるんだ

    2008-08-30
    yuiseki
    yuiseki 2008/08/31
  • easy_install をインストール - Pixel Pedals of Tomakomai

    こちらのエントリを見ながら、easy_installをインストール。と思ったら、wgetが動かない。 % wget http://peak.telecommunity.com/dist/ez_setup.py dyld: Library not loaded: /opt/local/lib/libintl.3.dylib Referenced from: /opt/local/bin/wget Reason: image not found zsh: trace trap wget http://peak.telecommunity.com/dist/ez_setup.pyこちらのエントリの方法で対処しました。 で、またエラー。 Downloading http://cheeseshop.python.org/packages/2.5/s/setuptools/setuptools-0.6

    easy_install をインストール - Pixel Pedals of Tomakomai
    yuiseki
    yuiseki 2008/03/17
  • 1