「ゴーン道場」は面白い

Empathyは重要

ProductName ゴーン道場 (朝日新書)
カルロス・ゴーン
朝日新聞出版 / 735円 ( 2008-11-13 )


  • 上司と部下はコーチと選手のようなもの
  • 革新の大半は異なる領域同士の交流から生まれる
  • ストレスは人生の一部
  • 歴史は常に勝者の視点で書かれている

HaskellのコードをJavascriptにコンパイルするfayが面白い

Fay programming language

インストールは簡単

cabal update
cabal install fay

フィボナッチなコードをjavascriptにコンパイルしてみる。printを自分で定義する必要があってはまった。

fib 0 = 1
fib 1 = 1
fib n = fib (n-2) + fib (n-1)

print :: Foreign a => a -> Fay ()
print = foreignFay "console.log" ""

main = print $ fib 10

コンパイルのときにautorunオプションをつけるとmain関数がよばれるようになる

fay -autorun fib.hs

実行してみる

$ node fib.js 
89

まだバージョンが若いのでこれからに期待な感じだけど、Haskellでクライアントサイドのプログラミングができるようになるのは面白いかもしれない。

ポケモン

チャンピオンリーグまで進んだ。

ProductName ポケットモンスターホワイト2

任天堂 / 3927円 ( 2012-06-23 )


最近、息子がやれやれとせがんでどうしようもないので、夜がポケモンで潰れてる。Haskellとかやりたいのに。

不動産・建築・お金のプロが教える 中古住宅の本当にかしこい買い方

まわりがどんどんマンション買ってるみたいだけど、うちはこのまま持ち家のままでいいのか?という流れになっている。やっぱ賃貸でいいんじゃないのかなーと。

家が資産と呼べるのは土地の価格が上昇し続ける昔の状況だからであって、建物自体は価値がなくなっていくからなぁ。

  • 中古住宅のリスクは契約の後にしかみえてこないものがおおい
  • 宅建の試験問題のうち建物の知識を問われるのは二問くらいしかない
  • 登記簿謄本の地目をチェック
  • 瑕疵担保責任が免債となっているケースは要注意

モナド変換子はボイラープレートの回避というかパターン

モナド変換子という小難しい名前がついていたので、ちょっと中身を見るのを避けていたのだけど、久しぶりにモナドのすべてを読んだら、第三部まですらすら読めて、モナド変換子って単なるパターンじゃないかと思えるようになった。モナドの合成ってめんどくさいのねって思った一方でHaskell楽しいじゃんって思った。

さらに勢いで、RWHの「作って理解するモナド変換子」も今読んだらわかりやすかった。

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan
オライリージャパン / 3990円 ( 2009-10-26 )


モナド変換子を使ったプログラミングの強みと弱み

  • 純粋なコードとの干渉
  • 過度の順序付け
  • オーバーヘッド
  • インターフェースが大きすぎ

Haskellのレコード構文

レコード構文の話

data Test = TS {vars::[Int], others::[Int]} deriving Show

既にあるデータに対しても利用できて、もとのデータの値を一部だけ変更した新しいデータが作られる。

*Main> let ts = TS {vars=[], others=[1..10]}
*Main> ts
TS {vars = [], others = [1,2,3,4,5,6,7,8,9,10]}
*Main> ts {vars=[1,2,3]}
TS {vars = [1,2,3], others = [1,2,3,4,5,6,7,8,9,10]}

知らなかった。

それから、データコンストラクタが異なっていれば同じフィールド名を付けられる。

data AnotherTest = TS1 {vars::[Int], others::[Int]} 
                 | TS2 {vars::[Int], others::[Int]} 
                 deriving Show

othersを変更してみる

*Main> let ts1 = TS1{vars=[1..3],others=[]}
*Main> let ts2 = TS2{vars=[1..3],others=[]}
*Main> ts1 {others=[1]}
TS1 {vars = [1,2,3], others = [1]}
*Main> ts2 {others=[2]}
TS2 {vars = [1,2,3], others = [2]}

生きづらさはどこから来るか: 進化心理学で考える

進化心理学はちょっと突飛な感じがするが、よくよく考えてみると納得する。

社会学と生物学の視点から、現代的な進化理論を用いて、感情、認知、性的適応の進化などを含めた人間の本性を解明する学際的な学問

著者はもともとバイオインフォマティクスの人らしいので、トンデモ感はなく、論理的に納得性の高い考察が与えられていて非常に面白く読めた。

僕のバックグラウンド的には、

すべての未来は量子力学で計算できるが複雑すぎて解けない

みたいな感じだけど、進化的な制約をうまく使って人の感情的な行動を説明しているのは面白い。ゲーミフィケーションにもつながるんだろうなぁと思ったりもする。

  • 私たち人類の心身は一万年前から進化しておらず
  • 一律の教育は役に立たない
  • 双子研究の結果、教育を含む共有環境は正格や能力発揮にほとんど影響しなかった
  • ルールの破り方にも意味がある
  • 高齢者の介護は生物の観点的には非生産的で非合理的な行為
  • 人間はサルから幼形進化した

HaskellでPLEAC(9章)

HaskellでPLEAC 9 章 ディレクトリ

ファイル操作とかディレクトリ操作はSystem.DirectorySystem.FilePath.Posixを探せばいい。

それからHakyllとかTemplate Haskellとかチェックし始めた。

京都でパターン認識と機械学習の学習をゲット

烏丸五条から四条烏丸のほうに上がって、四条木屋町まで異動して五条まで下って、また烏丸方面に歩き出したら雨が降ってきたので、京都駅まで歩くのをやめて地下鉄に乗ってしまった。

四条烏丸の祇園祭の名残(といってもまだ続いているんだっけ?)

1342925150

目的の1つである、ジュンク堂でパターン認識と機械学習の学習をゲットするというタスクはこなした。

1342925160

創作八ツ橋の店はオープン前だったが、オープンまで待つモチベーションはなかったので、諦めた。八ツ橋ネタは色々教えてもらったので、そっちにスイッチした。

1342925152

高瀬川沿いは楽しい。三条まではしょっちゅう上がっていたけど、降りたことはなかったので新鮮。

1342925153

もう一つの目的である、近喜の油揚げもゲット。鳥彌三とか露庵菊乃井もまた行きたいなぁとか思いつつ、下りていった。

1342925155

高瀬川

1342925157

趣を感じつつ。

1342925158

もう少しゆっくりしてもよかったかもしれんが、観光する気分でもなかったしなぁ。

Haskellで日付をあつかう

PLEACのレシピ9.1 タイムスタンプをHaskellで書いてみたんだけどちょっとめんどくさかった(Pythonも日付はめんどくさいけど)。

import System.Posix.Files
import System.Time
import System.Posix.Types
import System.Environment

getTimes :: FilePath -> IO (ClockTime, ClockTime)
getTimes fp =
    do stat <- getFileStatus fp
       return (toct (accessTime stat),
               toct (modificationTime stat))

toct :: EpochTime -> ClockTime
toct et = TOD (truncate (toRational et)) 0

main :: IO ()
main = do
  (file:_) <- getArgs
  (atime, mtime) <- getTimes file
  print atime
  print mtime

getFileStatus関数で時間の情報はEpochTime型が返ってくるので、これをClockTime型に変換する

type EpochTime = CTime

EpochTimeはCTimeの別名なんだけど、CTimeはRealのインスタンスなのでtoRationalで有理数に変換してtruncateを通してIntegerに。

これをClockTime型のデータコンストラクタであるTODに通す。

ClockTime型の出力は

Sun Jul 22 09:10:59 JST 2012

もう少し細かく制御したい場合にはtoCalendarTime関数でCalendarTIme型に変換して望みのフォーマットにすればいい。

RWHの20.4にきちんと書いてあった。

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan
オライリージャパン / 3990円 ( 2009-10-26 )