Haskellでreadlineを使う

cabalでreadlineをインストールするときにhomebrewで入れたreadlineを使う。

オプションを2つほど入れとく

cabal install readline \
--configure-option=--with-readline-libraries="/usr/local/Cellar/readline/6.2.2/lib" \
--configure-option=--with-readline-includes="/usr/local/Cellar/readline/6.2.2/include"

追記 120709

haskelineというものを教えてもらった。

これはよりhaskellっぽくかけて、高機能らしい。~/.haskelineでユーザー設定変えたりCtrl-Cの挙動を変えたりできる。

main :: IO ()
main = runInputT defaultSettings loop

ってやっておけばあとはreadlineと同じノリで書いていけるし、最初からこっちを使うようにすればいいかなと思った。

仕事に役立つインテリジェンス

創薬研究ももちろんだが、研究職として働いてるヒトの解決しなきゃいけない問題そのものが、あるかもしれないないかもしれない答えを探すことのほうがずっと多いので一章の問題の分類の図は分かりやすい(どこかでみたことあるので一般論だろう)。

不確定問題は、情報のインフォメーションよりも分類推定の役割が大きくなる、つまり仮説構築力とかアブダクションとかそっちが求められるってわけですね。

本書はどっちかというとベイズ推定の入門的な立ち位置なのかなぁ。誤信を避けるような内容が多いし。仮説を適宜見なおそうとかそんな話も入ってるから、情報分析全般の入門書っていう位置づけなのかな。ちょっと全体像がつかみにくかった。

ProductName 仕事に役立つインテリジェンス (PHP新書)
北岡 元
PHP研究所 / ?円 ( 2008-03-15 )


2 / Netsky

ドラムンベースだけじゃなくて、ドラムステップやダブステップがうまく散りばめられて聞き飽きしない。

ProductName 2
Netsky
Hospital Records / 1698円 ( 2012-06-25 )


  • No beggining
  • Get Away From Here

あたりが好き

bistro gawa

@bg7860との2年ぶりのビストロガワ

壁にサノユカシさんのイラストが描かれてたので気になったんだけど、その経緯を聞くのを忘れた。

1341741263

  • スモークサーモン
  • 赤鶏のテリーヌ
  • 野菜のグリル
  • お任せ魚料理(カマス)
  • 鴨のコンフィ
  • ショコラテリーヌ

写真はないので、現地で堪能してみてください。

野菜のグリルは外せないが、魚料理の火の通し方とかたまらんかった。お酒はレモンビールと赤ワインを飲んだ。

今度は娘を連れてランチにでも行きたい。

Git+GitHubのハンズオンをやります

ちょっと先の9/1の話ですが、静岡のB-nestでやるので興味があれば参加するといいと思います。

Gitの入門的な内容から、GitHubの簡単な使い方ぐらいをやる予定です。Gitを独りで使えればGitHubも快適に使えるので、とりあえずこんな感じでいいかなと。誰かがグループ開発のさわりを入れてくれるんだったら歓迎、個人的に興味あるし(職場で独りで開発なんでグループ作業ってのを経験したことがない)。

あとLTが幾つか入るみたいです。僕も空気を読まずにmagitの話でもしようかしら。

ProductName WEB+DB PRESS Vol.69
大塚 弘記
技術評論社 / 1554円 ( 2012-06-23 )


ProductName 入門Git
濱野 純(Junio C Hamano)
秀和システム / 2310円 ( 2009-09-19 )


「牛丼一杯の儲けは9円」を読んだ

売上を増やすか、原価を下げるかだけど後者の話。

プロセスの改善の話とか、不正ギリギリをついていくテクニックとか、価格交渉の話とかなかなかおもしろい。

特に面白かったのは、商品を知らない相手に高く売りつける技術

  • 身だしなみをしっかり
  • 商品に閑する相手の知識レベルを知る
  • 商品のメリットだけでなくデメリットを紹介することで信頼を勝ち取る
  • 大手も同じような仕入れをしていると安心させる
  • 価格は言い切る
  • エトセトラ

筆者が「売り買いは知的ゲームだ」と書いてある部分は同意できるかな。基本的に客が分かる価値の最大化が戦略でしょう。

実際に似たようなことを経験した。去年ぐらいに部署を移って、昔付き合いのあった会社の営業が売り込みにきたんだが、製品の技術とか関係ない接待トークみたいなノリで営業してきたので、製品の細かい部分を事細かに質問したら、

「次回は技術のちゃんとわかる営業を連れてきます」

と言ってきたので、

「以前はちゃんと技術の分かる方も毎回同席してたはずなんだけど、今回は時間の無駄でしたねー」

とチクリと返してやったら、

「御社の前担当者は技術をあまり理解なさらなかったので」的なことをポロリした。

あちゃー確かにバレてるわと思ったのであった。

Invent With PythonのGuess the NumberをHaskellで

Guess the NumberをHaskellで

import System.Random

randomNumGen :: IO Int
randomNumGen = getStdRandom (randomR (1,20))

main :: IO ()
main = do
  print "Hello! What is your name?"
  myName <- getLine
  print $ "Well, " ++ myName ++ ", I am thinking of a number between 1 and 20."
  print "Take a guess."
  answer <- randomNumGen
  guessNumber 0 answer myName
      where guessNumber gt answer name =
              if gt > 4 
              then do print $ "Nope. The number I was thinking of was " ++ show answer
              else do
                  line <- getLine
                  let guess = read line :: Int
                  case (compare guess answer) of
                    LT -> print "Your guess is too low." >> guessNumber (gt + 1) answer name
                    GT -> print "Your guess is too high." >> guessNumber (gt + 1) answer name
                    EQ -> print $ "Good job, " ++ name ++ "! You guessed my number in " ++ (show gt) ++ " guesses!"

ユーザーからの入力を読み込んでIntに直すときに

line <- getLine
let guess = read line :: Int

ってやったけど、本当はどうやるのがいいんだろうか?

それから、名前と答えを関数で持ちまわるのがダサいが、こういう場合ReaderTとStateTどっち使うべきなんだろうか?

Write Yourself a Scheme in 48 Hours読了

Write Yourself a Scheme in 48 Hoursを読んでいるが、9,10章を流し読みしたので、一通り読み終わった。

丁度読んでる途中にWeb+DB PRESSを久しぶりに買った(Perl Meets Beats目当てで)んだけど、僕の中では「大規模コードリーディング」がヒットした。メタ知識重要ってことで。

ProductName WEB+DB PRESS Vol.69
大塚 弘記
技術評論社 / 1554円 ( 2012-06-23 )


Haskellのコードリーディングの場合は、手続きを追っかけると言うよりは、hoogleで型から関数の意味(すなわち単語の意味)を調べたり、文脈を考えながらセクションの意味を理解したり、クラスの意味を理解したりと、メタ知識をどんだけ仕入れるかが重要だったりするのでgoogle使用率が妙に高くなる感じ。

それから、本を読む本の技術が結構生きてくるのかなぁと。

ProductName 本を読む本 (講談社学術文庫)
J・モーティマー・アドラー
講談社 / 945円 ( 1997-10-09 )


もう少し効率的に読めるようにしたい。

営業と詐欺のあいだ

お客様につたえること

  • メリット
  • 信頼
  • 価格

ProductName 営業と詐欺のあいだ (幻冬舎新書)
坂口 孝則
幻冬舎 / 777円 ( 2008-09 )


相手の自尊心を理解する

Haskellのクロージャ

Write Yourself a Scheme in 48 Hoursを読んでいる。8章のクロージャ

定義がこうなっていた。

PrimitiveFunc ([LispVal] -> ThrowsError LispVal)
Func {params :: [String], vararg :: (Maybe String), 
      body :: [LispVal], closure :: Env}

スタックにつまないで環境をそのまま詰め込むのか。

そういえばRWHでも似たようなこと書いてあったような気がしたんだけど、どこだか忘れた。

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


Haskellの場合はカリー化で束縛してもいいし、データコンストラクタで束縛してもいいのか。