« 2006年7月 | トップページ | 2006年9月 »

2006年8月31日 (木)

[Comp] YAHT (Haskell)


Chapter 3 まで、読んだ。
プログラムにIOがからむと途端に難しくなるな。
さらにそこに再帰が出てきた日にゃ...。



あと、do の中で、変数を使おうと思ったら、
let式にしないといけなかったんだっけ?



do
x = 5


はエラーで、



do
let x = 5


としないといけない?



この後、ちゃんと丁寧な解説があるみたいだから、そこまで、じっくり読めば、
すんなり、Haskellのコードを読んだり書いたりできるようになるだろうか。



Exercise 3.10の答を見て、
product や sum という関数の存在を知った。
自分で似たようなものを作っていた。



myprod = foldr (*) 1
mysum = foldr (+) 0


ghci で :load の他に、:reload コマンドがあることを知った。


| | コメント (0) | トラックバック (0)

2006年8月30日 (水)

[Comp] YAHT P34


Yet Another Haskell Tutorial は長いので、YAHTと省略します。



インデントが重要な意味を持つHaskellでは、
エディタでタブ幅は空白8個分に設定しておくようにと注意書きが。
それ意外の長さの設定はできないのかな。


| | コメント (0) | トラックバック (0)

2006年8月29日 (火)

[Comp] Yet Another Haskell Tutorial


3.4まで読んだ。
解説で使用しているメインの処理系は、GHCみたいだ。
(注釈でHugsも登場する。)
一応、ふつけるとTwo Dozens を読んでいるので、
今のところは、読み飛ばしても何とか自分なりに理解できる。


| | コメント (0) | トラックバック (0)

[Ruby] 配列の勘違い


Ruby で、1から10までの数の配列を作ろうとして、



ary = [1 .. 10]


としてしまい、はまった。



p ary.class


で、Arrayとなるので、余計に悩んでしまった。



Haskellだと、



ghci
Prelude> let ary = [1 .. 10]
Prelude> :type ary
ary :: [Integer]


となるので、つい勘違いしてしまった。


| | コメント (0) | トラックバック (0)

[本] 昼休みに図書館で借りた本


ひよこはなぜ道を渡る(エリザベス・フェラーズ)


| | コメント (0) | トラックバック (0)

[本] 出勤途中に返却ポストに入れて返却した本


配達あかずきん(大崎梢)


| | コメント (0) | トラックバック (0)

2006年8月28日 (月)

[Comp] Two Dozens Short Lessons in Haskell


途中、ところどころ、読み飛ばしたけれど、一通り読んだ。


| | コメント (0) | トラックバック (0)

[本] 閉館していたので、返却ポストに入れて返した本


初桜(水原佐保)


| | コメント (0) | トラックバック (0)

[Comp] Two Dozens Short Lessons in Haskell


P. 112 の take の定義の



n > 0 = [x] + take (n - 1) xs


は、多分、



n > 0 = [x] ++ take (n - 1) xs


が正しい。


| | コメント (0) | トラックバック (0)

[Comp] Haskell の iterate

iterate f x

は、x に対して、f を繰り返し適用したときの結果を配列で返す。ただし、配列の最初は、fを0回繰り返した値になります。

だから、

iterate (\x -> x + 2) 0

は、0を含めた

[0, 2, 4, 8, ...]

を返します。

つい1回目からfを適用して

[2,4,8, ...]

と勘違いしないように気をつけましょう。

| | コメント (0) | トラックバック (0)

2006年8月27日 (日)

[本] 返した本


逸脱者(グレッグ・ルッカ)


| | コメント (0) | トラックバック (0)

[本] いつもは一度に一冊にしているのだが、思うところがあって、一度に借りた2冊の本

  • 配達あかずきん(大崎梢)

  • 初桜(水原佐保)

| | コメント (0) | トラックバック (0)

[本] LL Ringに向う電車の中で上巻を読み終えた本


逸脱者(グレッグ・ルッカ)


| | コメント (0) | トラックバック (0)

2006年8月25日 (金)

[Comp] Two Dozens Short Lessons in Haskell


16章まで読んだ。17章は興味を持てなかったので、さらっと読み飛ばす。


| | コメント (0) | トラックバック (0)

[Title] 「袋のすすめ」の由来


深い意味はありません。袋を持っていくといい人だと思われるかもしれません。



元ネタは『骸の爪』(道夫秀介)。



すいません。まだ、読んでません。


| | コメント (0) | トラックバック (0)

2006年8月24日 (木)

[Comp] Two Dozens Short Lessons in Haskell


13章まで読んだ。
iterateなど、これまでの知識を生かして作成したフィボナッチ数列を生成するプログラム。



fibs :: Int -> [Integer]
fibs n = take n $ [y | (x, y) <- iterate f (0, 1)]
where
f (n, m) = (m, n + m)


なんかほとんど数学みたい。


| | コメント (0) | トラックバック (0)

2006年8月23日 (水)

[Comp] Two Dozens Short Lessons in Haskell


折り返し点の12章まで読んだ。
ふつけるよりも丁寧で教科書っぽい。
10章から12章は、なんか数学っぽいので、かなり抵抗を感じる人もいるかも。



高階関数の型とかは、まだまだ、混乱してしまうな。


| | コメント (0) | トラックバック (0)

2006年8月22日 (火)

[Comp] Haskell Two Dozens P.33


私にはトリッキーなコードに見えてしまうなあ。
Haskell 使いの人にとっては、これって普通なんだろうか。



removeBPC = foldr1 (.) [remove c | c <- ",. "]

| | コメント (0) | トラックバック (0)

2006年8月21日 (月)

[Comp] Haskell Getting set up


によれば、GHCをソースからコンパイルしようとするのは very bad idea らしいです。
確かに GHCをインストールするのに別のHaskell Compilerが必要だもんな。
(なので、私はソースからインストールをあきらめました。)


| | コメント (0) | トラックバック (0)

2006年8月20日 (日)

[本] 借りた本


逸脱者(グレッグ・ルッカ)


| | コメント (0) | トラックバック (0)

[本] 返却した本


ザ・チーム(井上夢人)


| | コメント (0) | トラックバック (0)

2006年8月19日 (土)

[Comp] SICPでHaskell


Exercise 1.3 の 改良版



import List
func :: (Num a, Ord a) => a -> a -> a -> a
func a b c = x * x + y * y
where
x = head . reverse $ sort [a, b, c]
y = head . tail . reverse $ sort [a, b, c]

| | コメント (0) | トラックバック (0)

[Comp] SICPでHaskell


Exercise 1.4 の a-plus-abs-b をHaskellで。



a_plus_abs_b :: Int -> Int -> Int
a_plus_abs_b a b = (if (b > 0) then (+) else (-)) a b

| | コメント (0) | トラックバック (0)

[Comp] SICPでHaskell(1)


SICPの Exercise 1.3 を Haskellでやってみる。
sortを使うのは、反則?



import List
func :: Int -> Int -> Int -> Int
func a b c = (x * x) + (y * y)
where
x = head . reverse $ sort [a, b, c]
y = head . tail . reverse $ sort [a, b, c]

| | コメント (0) | トラックバック (0)

[Ruby] Win32OLE


Railsに影響されて、1.9 では、Win32OLEでも、名前つき引数の代わりのHashで
キーがSymbolの場合も受け付けるようにした。


| | コメント (0) | トラックバック (0)

[本] 借りた本


ザ・チーム(井上夢人)


| | コメント (0) | トラックバック (0)

[本] 返却した本


善意の殺人(リチャード・ハル)


| | コメント (0) | トラックバック (0)

[Comp] Gauche と Emacs


LispImplForSICPを参考にして、
.emacs.elに設定。



(setq scheme-program-name "gosh")
(require 'cmuscheme)
(defun scheme-other-window ()
"Run scheme on other window"
(interactive)
(switch-to-buffer-other-window
(get-buffer-create "*scheme*"))
(run-scheme scheme-program-name))
(defun gauche-info ()
(interactive)
(switch-to-buffer-other-frame
(get-buffer-create "*info*"))
(info
"/usr/local/info/gauche-refj.info.gz"))
(define-key global-map
"\C-cS" 'scheme-other-window)
(define-key global-map
"\C-cI" 'gauche-info)


Haskellとは直接関係ないのですが、
SICPも読もうかなと思っているので。


| | コメント (0) | トラックバック (0)

[Comp] Hugs


Two Dozen Short Lessons in Haskellでは、
Hugsを使っているようなので、インストール。



tar zxvf hugs98-plus-May2006.tar.gz
cd hugs98-plus-May2006
make
make install

| | コメント (0) | トラックバック (0)

2006年8月18日 (金)

[Comp] Two Dozen Short Lessons in Haskell


まだ、13ページ読んだだけですが、多分、ふつけるよりやさしいです。
英語を苦にしなければ、こちらから読むのもいいかも。



ちょっと構成が面白いです。
PDFのファイルが2つに分かれてます。
一方がHaskellの解説と穴埋め式の問題になっていて、
もう一方が、解答になっています。
書いて覚えるHaskellドリルという感じ。


| | コメント (0) | トラックバック (0)

[Ruby] Win32OLE で Outlook


ずっとHaskellの話題なので、たまには、Rubyの話題でも。
るびまの記事
参考にして、Outlookを扱うスクリプトを書いた。


| | コメント (0) | トラックバック (0)

[Comp] ふつける


一応、一通り読み終えた。
モナドと型システムは、まだ、よくわかってない。


| | コメント (0) | トラックバック (0)

2006年8月17日 (木)

[Comp] やさしい Haskell入門


やっぱり、あまり、やさしくない気がする。
ちらっと見た感じでは、英語だけど、




の方がやさしそう。少なくとも、とっつきやすそうである。


| | コメント (0) | トラックバック (0)

2006年8月16日 (水)

[本] ふつける 12章の前に


やさしいHaskell入門を読んでみたのだが難しい。
ふつけるを読んだ後で、整理するつもりで読むとよさそうな気もするけど、ちと難しい。


| | コメント (0) | トラックバック (0)

2006年8月15日 (火)

[Comp] ふつけるの後


一応、11章まで読んだので、ふつけるの後はどうしようかと考えている。
意外とここまでは、ふつける(Haskell)を楽しんでいる自分がいるので、
このまま放置するのが、ちょっとばかし惜しくなってきている。




ちょっと横道にそれて、ふつけるオススメの




思い切って投資して




上2つを読んでから、もう一度考えてみるか。
SICPを読みながら、SICPの問題をHaskellとSchemeでやってみるというのも一つの手かも。


| | コメント (0) | トラックバック (0)

[Comp] ふつける 11章


モナドは、まだイメージがつかめない。


| | コメント (0) | トラックバック (0)

2006年8月14日 (月)

[Comp] ふつける


さらっと10章を読み終わりました。
次はいよいよモナドです。


| | コメント (0) | トラックバック (0)

[Comp] ふつける 9 章 (9.6練習問題)


出題の意図を理解し損ねたかも。
これだと、Ordクラスのcompareを使ったことにならないのかな。



import List
data Line = Line {
number :: Int,
string :: String
} deriving (Show, Ord)
instance Eq Line where
(Line num1 str1) == (Line num2 str2) = (num1 == num2)
ls :: [Line]
ls = [(Line 3 "three"), (Line 1 "one"), (Line 2 "two")]
sortLines :: [Line] -> [Line]
sortLines = sortBy compare
main = print $ sortLines ls


なんか9章は難しくて理解があやふやになってるなあ。
さくさくプログラムを書けないし。


| | コメント (0) | トラックバック (0)

2006年8月13日 (日)

[Comp] SBCL


Thread サポートの SBCLを使うにはKernelのヴァージョンが古いと
エラーが。
ということでソースからインストールしようとしたら、Lispの処理系が必要らしい。
そこで、apt-get で Vine の CLISP をインストール。



ところが、Vine の CLISP で SBCLをコンパイルすると途中でエラーに。
そこで最新のCLISPをソースからコンパイルしてインストールした後、
SBCLをインストールした。



sbclと入力すると動いているみたいなので、これでよしとする。


| | コメント (0) | トラックバック (0)

[Comp] Lispの処理系


Emacs-Lispを除いて、Lispの処理系を一つも、インストールしていない事に気づく。
そこで、処理系として何があるかと調査。
候補としては、




  • CLISP



  • SBCL



  • CMUCL



  • ACL




あたり。
CLISPは、Vineにあるので、apt-getで手軽にインストールできる。
SBCLとCMUCLとACLは、Practical Common Lispで取り挙げられていた。
ACLは、Trial版をどこからダウンロードすればいいのかわからないので、パス。
CMUCLは、日本語がどこまでサポートされているのかはっきりしないので、パス。
SBCLは、CLISPより速いみたいだし、何より
Practical CommonLisp
取り挙げられているので、SBCLが有力。


| | コメント (0) | トラックバック (0)

[Comp] ふつける 第8章


脊髄反射の速度で、ポイントフリースタイルへ書き換えるレベルには、ほど遠い。
どっちかっていうと、リファクタリングの気分。


| | コメント (0) | トラックバック (0)

2006年8月12日 (土)

[本] 借りた本


善意の殺人(リチャード・ハル)


| | コメント (0) | トラックバック (0)

[本] 返した本


RailsによるアジャイルWebアプリケーション開発


| | コメント (0) | トラックバック (0)

[Comp] ふつける(7.9 練習問題)


if式を使うようじゃまだまだですかね。



main = do cs <- getContents
putStr $ unlines $ concatMap fold (lines cs)
fold :: String -> [String]
fold str = let (s, rest) = splitAt 60 str
in if null rest then [s] else s : fold rest


if 式を使っていない解答例の方が読みやすいですね。


| | コメント (0) | トラックバック (0)

2006年8月11日 (金)

[Ruby] ActiveRecord の find

たとえ、has_many, belongs_to の関係があったとしても、 findメソッドは、joinを使ったSQL文を発行しない。 joinさせたい場合は、:include オプションを使う。:include で駄目な場合には、:join オプションを使って指定する。

| | コメント (0) | トラックバック (0)

[Ruby] Rails


ヴァージョンアップした。


| | コメント (0) | トラックバック (0)

[Title] 「朝、まだ悪い品質」の元ネタ


リリース当日の朝になっても、バグをつぶせず、品質は悪いまま。



元ネタは、「頭が悪い密室」(水原章)。



ちょっと時代が古いミステリ短編集。
一般の書店では売ってないみたいなので、図書館で借りるなりして下さい。


| | コメント (0) | トラックバック (0)

[本]借りた本


死ぬまでお買物(エレイン・ヴィエッツ)


| | コメント (0) | トラックバック (0)

[本] 返した本

  • 夏期限定トロピカルパフェ事件(米澤穂信)

  • 白昼の闇(クリストファー・ファウラー)

| | コメント (0) | トラックバック (0)

2006年8月10日 (木)

[Comp] ふつける


4章まで読み終えた。
関数合成と部分適用を使わないsort。



import List
main = do cs <- getContents
putStr $ unlines $ sort $ lines cs


同じくuniq。sortよりちょっと複雑。



import List
main = do cs <- getContents
putStr $ unlines $ uniq $ lines cs
uniq :: [String] -> [String]
uniq xs = map head $ group xs

| | コメント (0) | トラックバック (0)

2006年8月 9日 (水)

[Comp] ふつける


パターンマッチってクラスのポリモーフィズムとオブジェクトのポリモーフィズムを足したみたいで面白い。



3.6練習問題



main = do cs <- getContents
putStr $ swapstra cs
swapstra :: String -> String
swapstra cs = map swapa cs
swapa :: Char -> Char
swapa 'a' = 'A'
swapa 'A' = 'a'
swapa c = c


一応自力でやってみました。
一瞬、mapを使うべきか、concatMapを使うべきか悩んでしまった。


| | コメント (0) | トラックバック (0)

[Comp] ふつける


HaskellはPython同様、インデントに意味がある。
タブ幅は、8で計算するみたいですが、これは変更できるんだろうか。
もっとも、Vim 使いの私は、普段 set expandtab を設定しているので、さほど、影響はない。



生まれて初めてのHaskellプログラム。



main = do cs <- getContents
print $ length cs

| | コメント (0) | トラックバック (0)

2006年8月 6日 (日)

[本] 思うところがあって一度に借りる事にした2冊の本

  • 『夏期限定トロピカルパフェ事件』(米澤穂信)

  • 『白昼の闇』(クリストファー・ファウラー)

| | コメント (0) | トラックバック (0)

[本] 午前中に借りて昼間読んで午後に返した本


扉は閉ざされたまま(石持浅海)


| | コメント (0) | トラックバック (0)

[本] 途中まで読んだけど、テンポがなじめず、ストーリーの世界に入り込めなかったので返却することにした本


レイヤー・ケーキ(J・J・コノリー)


| | コメント (0) | トラックバック (0)

2006年8月 5日 (土)

[Ruby] Rails


本をざっと一通り読み、個人で唯一使っているWebアプリをRuby on Rails で実装しなおしているところだ。
少しは、Railsの事がわかったような気がする。


| | コメント (0) | トラックバック (0)

[Ruby] Win32OLE


あまり、自分では、使わないと言っていたのですが、
最近、定型業務が増え、自動化したいと思い、使うようになりました。


| | コメント (0) | トラックバック (0)

[Ruby] Win32OLE


ruby 1.9 で



make test-all TESTS=win32ole


とすると



95 tests, 199 assertions, 0 failures, 0 errors


となった。
なんでもいいから、もう一個 assertion を追加しとけば良かった。


| | コメント (0) | トラックバック (0)

« 2006年7月 | トップページ | 2006年9月 »