Haskellの関数従属とは「ある型が決まれば別の型が一意に決まる」という依存関係のこと

使う時にはあまり気にならないが、「| m -> s」が関数従属性を定義しているらしい。

第6回 局所的な「状態」を利用するためのStateモナド

class (Monad m) => MonadState s m | m -> s where
    get :: m s
    put :: s -> m ()

結局コレは何かというと以下のエントリが参考になる。

この「| a -> v」の部分は「aを引数に取りvを返す関数」ではなく、型同士の依存関係を関数形式で記述したものです。意味としては「aが決まればvの型が一意に定まる」ことを意味しています。型クラスにおける関数従属

具体例は関数従属の背景で丁寧に解説されているが、型推論の際の曖昧性の排除を目的としているという理解でいいのかな。

参考

cocos2d for iPhoneで神経衰弱を作ってみた

本の通りにやっただけだが、cocos2d for iPhoneのバージョンが2.1-beta2なので本書執筆時の1.0.1と多少違っていた。

  • いきなりIntroLayerってのが出来ててちょっと戸惑った。
  • [CCTouchDispatcher sharedDispatcher]が廃止されていて、[[CCDirector sharedDirector] touchDispatcher]になった
  • Clear表示のCCLayerColorが半透明になってくれない(typoかなぁ?わからん)
  • 実機転送したら表示が小さい(これに困っている)

cocos

XCodeはGitとの連携もできるので、コミットしながらすすめていけるのは楽かな。あとCocos2dは慣れれば分かりやすいかもしれない。

ProductName cocos2d for iPhoneレッスンノート
加藤寛人
ラトルズ / 2499円 ( 2011-09-22 )


シャバドゥビ タッチ ヘーンシーン!

そろそろ探し始めないといけないらしいんだが。

このベルトはどう考えてもダサいんだけど。すぐ飽きるだろ。

Wii Uのソフト買ったほうがいいんじゃないのかなぁと思うんだが、そういうわけにもいかないんだよなぁ。

Haskell外部ライブラリの型をShowクラスのインスタンスにしてデバッグを楽にする

外部ライブラリを使っていてプリントデバッグをしたい時に、型がShowクラスのインスタンスになってないと印字されないので困る。

そういう時には、StandaloneDeriving拡張を使って外付けでderiving instance Showすればいい。

が、全てにderiving instance Showするようなデバッグ用オプションがあってもいいような気もするが。

コードの未来

タイトルだけからは何について語っているのか分からなかったので避けてましたが、読んでみるととても面白かった。

近未来の技術がどういう方向に動いていって、それにともなって言語はどうなっていくのかとかそういう話です。

しかし、現在のスレッドやRPCのような分散や並列を明示的に意識するような形では早晩限界が来ると思います。

と思っているので僕の場合はHaskellですね。

特に言語の話が面白かったが、SQLの話が個人的に一番おもしろかった。

  • NoSQLデータベースが優れていると言われているのは、性能と柔軟性のためである
  • SQLよりもNoSQLのほうが正のが良いというのは必ずしも事実ではない
  • 性能問題とSQLやACID特性には関係がない

ProductName まつもとゆきひろ コードの未来
まつもと ゆきひろ
日経BP社 / 2940円 ( 2012-05-17 )


  • プログラミングとは、アプリケーションのためのDSLデザインの過程である
  • DSLデザインの構成要素(コンテキスト、センテンス、ユニット、ボキャ、ヒエラルキ)

「独立・起業」の基本と常識

今の職場はもう少し役職が上がると健康的にもOJT的にも100%詰むのがわかっているので、(異動、転職、独立含めて)選択肢を増やし始めている。

まぁ、今の仕事自体は120%自分の裁量に任せられているし面白いんだけど、上司が自分の仕事を理解できないので成果面談でイラッとするのと、健全な批判が受けられないので独善的になりがちなのがデメリットだ。そこは他社のヒトと積極的にディスカッションすればいいのかなと思っているので社外発表はそれなりにこなしているのだけど、それだったら今の仕事の延長として会社に属しているメリットがまったくないよなぁってのもある。

創薬研究も停滞感が漂っていて、いまの研究所のスタイルがサスティナブルかどうかも疑問に思うところが多いので、他のことも検討しなきゃなーと思いながら色々手を出したり出さなかったりしているのだけどねー。Drug Discovery Todayなんかもオープンイノベーションだとか分業だとか分社化だとか仕組みの組み換え論が結構出てるけど、製薬会社が創薬研究に必要なミニマムは、臨床やる部門とリードを臨床まで持っていく技術を駆使するフェーズだけであってそれより上流はベンチャーでもアカデミアでもやれることだからねー。

まぁ、だらだらと進めていこうかなという。

ProductName これだけは知っておきたい「独立・起業」の基本と常識
高橋敏則
フォレスト出版 / 1365円 ( 2012-09-08 )


  • 保険関係は退職日から2週間以内にすべて済ませる
  • 日本政策金融公庫の融資制度
  • 印鑑の種類
  • すべての事業者が必ず作成するのは税金に閑する届出書類
  • 家族従業員に給与を払うときに出す届出

Template Haskellと準クォートのお勉強

Template Haskellと準クォートの違いがわからないというか全体的にぼやけた理解というかあまり理解していなかった(THの説明見ているとTH=QQみたいな印象を持ってしまうので区別がつかない)ので、3連休の最終日はTHってた。

ちょっと前にモナド内包表記で遊んでいたので、

[|...|]

とかいう記法はなんかの型に入っているイメージが湧いてくる。

要するにLispに例えるとTemplate Haskellはマクロで準クォートがリーダーマクロだという感じの理解で良いのだろうかね。

ProductName On Lisp
ポール グレアム
オーム社 / 3990円 ( 2007-03 )


Yesod無しでHamletを使う

sofのコードは動かなかった

  • Text.Blaze.Renderer.Stringは廃止なのでText.Blaze.Html.Renderer.String
  • HamletじゃなくてHtmlUrl

この二点を直したら動いた

{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}

import Data.Text
import Text.Blaze.Html.Renderer.String (renderHtml)
import Text.Hamlet

data Url = Haskell | Yesod

renderUrl Haskell _ = pack "http://haskell.org"
renderUrl Yesod   _ = pack "http://www.yesodweb.com"

title = pack "This is in scope of the template below"

template :: HtmlUrl Url
template = [hamlet|
<html>
    <head>
        #{title}
    <body>
        <p>
            <a href=@{Haskell}>Haskell
            <a href=@{Yesod}>Yesod
|]

main = do
    let html = template renderUrl
    putStrLn $ renderHtml html

hamletのシンタックスは先頭がタグなので、普段Jade使っている僕にとっては似てるけどなんか変だなという印象だ。しかし、Jadeは先頭の文字列の区別が予約語(ifとか)、それ以外の記号で始まらない文字列はタグになるので、込み入ったテンプレートは結構読みにくい。

なので、タグで区別できるHamletのほうが可読性がいいのかな。

インラインのタグを入れ子にしたい場合には、エスケープの処理とかしないといけないのはインデント系に共通の読みにくさかも。あと条件演算子を入れると同じレベルのliなんかでもインデントが1つ下がるので、ちょっと読みにくくなってしまうところも一緒かな。

Hamletでヨサゲなのはテンプレート中でMaybeとかCase式が使えるところかな。

なんか作ってみたくなってきた。

ProductName Developing Web Applications With Haskell and Yesod
Michael Snoyman
Oreilly & Associates Inc / 2805円 ( 2012-05-04 )


プログラマーのためのソースコードを読む技術

対象読者が「駆け出しプログラマ」なんだけど、どっちかというと駆け出しプログラマに教える立場のヒトが読者なのかなと。分かっている人なら「あーそうそう」と思えるけど、教わる側は何言ってるのかわからないだろうなという記述がちょこちょこあった。

対象コードも、ちょっとレガシーめのプロジェクトを想定しているらしく、テストコードが付属しているのを想定していないようだ。今だとコード読む時にはマニュアルとか仕様を読むよりテスト読みながらコードを追いかけるほうが早い場合もあるし、オープンソース系のGitHubみたいなので管理されている場合にはIssueの議論を拾うのも行間を読むコツだったりする(議論の合間にコードに対する考え方とかが読み取れるしね)。

著者の略歴見たら組み込み系のヒトだった。

Gnu Globalの使い方が参考になったくらいかな。

ProductName プログラマーのためのソースコードを読む技術
高木 信尚
技術評論社 / 2604円 ( 2010-06-11 )


足保漁港@沼津に海釣りに行ってきた

娘が行きたがるので、この時期だったらカワハギかなぁってことで、ボートの予約をするもどこも撃沈。(3連休だしもっと早くに予約しないとダメだろう)

結局、足保漁港でサビキ釣りでもすることにした。キンギョくらいは釣れるから坊主はさすがにないだろうってことで。

足保漁港は正面に富士山が見えて投げてて気持ちいいので好きな釣り場のひとつだ。イカの墨跡があちこちにあったので、そこそこ釣れてる感じだ。太刀魚はもう終わったのかな。

ちなみに僕の好きな釣りは

  • 活きアジつかったアオリイカ釣り
  • 太刀魚釣り
  • カワハギ釣り

かな。アナゴは楽だけど暇だ。一方ルアーはせわしなく動くのが面倒くさい。上の3つはその中間なので好きだ。

サビキは子供のサポートしてて、キンギョは沢山、アジが二匹とメジナの子どもが5匹くらい(リリースした)。アジは目がいいからハゲ皮だとあまり食わなかったのでトリック仕掛けのほうがよかったかもしれない。あと、細長いので明らかにアジじゃないんだけど青物っぽいものの子供もかかった。

子供のサビキの手伝いの合間にワームを漁港内で投げていたらカマスヒット。なかなかの大きさだった。

1349513387

豆アジはもっと釣れたら南蛮漬けにするのがよいんだが、カマスがいたので干物にしてしまった。

網がなかったので焼き網にのせて干してやった。

1349513389

干す段階になって気づいたんだが、頭落としたら変じゃんと。