『すごいHaskell楽しく学ぼう!』2日目


昨日はインストールした所で終わりました。今日は第1章の初めからやりますよー。

とりあえず対話型インタプリタということで、ghciですね。基本的な演算子の確認、結合度の話まで終わりました。とりあえず関数適用が最優先、覚えました。次はいよいよファイルに関数を書きます。

関数の節も完了。数学はよくわからんけど数学っぽい感じがしますね。関数。

で、現在はリストのお勉強の途中です。まあここらへんは、Scheme勉強した時と同じみたいな感じですね。ここまではあまり面白くないけど引っかかるところもない感じか。また歯ごたえのある部分まで進めることを期待します。

メモ

  • ghci内で let a = 1 と書くのはスクリプトに a = 1 と書いて :l でロードするの等価
  • 文字列はリスト
  • 演算の優先度は関数適用が最優先
  • リストは同じ型の要素のみ格納できる

『すごいHaskell楽しく学ぼう!』

図書館から表題の本を借りて来ました。現在はイントロダクションを終えてGHCをダウンロードしているところ。うん、ワクワクしますね。返却期限は延長含めて4週間なので、その間にどこまでいけるかというところですが。まあ、ある程度まで進めたら買ってしまってもいいわけですよね。そっちのほうが学習しやすいですし。

この記事はローカルで書いて、「はてダラ」でアップロードするつもりなのですが、はてなの記事を書くなんて久しぶりで、文法が正しいのかどうか怪しいところ。そういえばはてなブログってMarkdownで書けるんでしたっけ? そっちにしようかな。tumblrMarkdown使えるんでしたっけ。はてダラみたいなツールがあればそっちに乗り換えてもいいですね。

と、言っている所でダウンロードが終わりました。インストールします。

インストール中...

今日の勉強時間もそろそろ終わりそうです。今日はイントロダクションとインストールだけになりそう。次から第1章の学習を進めていきますよー。……インストール結構時間かかりますね。時間もないので今日ははてなにアップロード確認して終わりにします。ではでは。

Project Euler Problem25

いつも通り日本語訳Wikiより問題文を引用。

フィボナッチ数列は以下の漸化式で定義される:

Fn = Fn-1 + Fn-2, ただし F1 = 1, F2 = 1.
最初の12項は以下である.

F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
12番目の項, F12が3桁になる最初の項である.

1000桁になる最初の項の番号を答えよ.

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2025

メモ化を使いました。
それ以外には特別なにかしているわけでもありません。普通です。
1000桁を数えるのも、 Integer#to_s と、String#length を使えば楽ちん。

def fib(num)
  @ary ||=[]
  return @ary[num] ||= 0 if num == 0
  return @ary[num] ||= 1 if num == 1
  return @ary[num] ||= fib(num-2) + fib(num-1)
end

while true
  num ||= 0
  result = fib(num)
  if result.to_s.length >= 1000
    puts "#{num}[#{result}]"
    break 
  end
  num+=1
end

vimのNscripter用シンタックス設定


タイトルの通りvimNscripterスクリプト用のシンタックス設定を書いてみました。


http://blog.livedoor.jp/rdph/archives/51303976.html
usr_44 - Vim日本語ドキュメント
を参考にさせて頂きました。


コピペやっつけ仕事なのでなんか不具合はあると思います。
vimNscripterスクリプトを書くなんていう奇特な方がいましたら使ってやってください。

2011/12/06 追記

tyruさんにコメントで指摘をいただいた点を修正しました。
キーワードの重複があったので、そこもこっそり修正。
ついでにvim.orgのほうにも投稿してみました。
nscripter.vim - syntax file for Nscripter : vim online

続きを読む

『アジャイルプラクティス』/『達人プログラマー』を読む

最近あまり勉強が進んでません。◯×ゲームとかオセロゲームとかも停滞してます。Project Eulerも長らく放置してるような気がします。
まあ、調子の出ないときは出ないなりに上手くやるということで、『アジャイルラクティス』と『達人プログラマー』を適当に読んでました。


アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣

達人プログラマー―システム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道

  • 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/11
  • メディア: 単行本
  • 購入: 42人 クリック: 1,099回
  • この商品を含むブログ (347件) を見る


どちらも、適当にパラパラとめくって興味のあるページを読む、
ということがしやすい本なので、今みたいに調子の出ないときに読むには良いかと。

アジャイルラクティス』のほうは読みやすかったです。『達人プログラマー』のエッセンシャル版という感じでしょうか。
『達人プログラマー』のほうは高度な内容が多くて、なかなか内容が頭に入ってこないのですが、
手元においておいてじっくり読みたい本だと思いました。

『入門 Subversion』を読む


図書館から『入門 Subversion』を借りてきました。
バージョン管理システムを使い始めたかったので、
Subversionでなくても良かったんですが、
市内の図書館にはこの本しかなくて、選択の余地なし、でした。


現在は第3章を読み進めてます。
内容は一般のPCユーザ向けで、技術者向けではないです。
説明が丁寧すぎてまどろっこしいところもありますが、
Subversionをとりあえず使い始めるには問題ないです。
バージョン管理目的で一人で使うぶんには、
第2章まで読んでしまえば全く問題なく使えそうです。


ちなみに最初は、Subversionそのものではなく、
SubversionGUIツールである、TortoiseSVNの使用方法を解説してます。
SubversionCUIで操作する方法はあとの方に書いてあると思います。たぶん。
GUIだとやっぱりまどろっこしいので、
追々vimから操作できるようにしたいところです。

一方Haskell


Haskellの勉強は停滞してます。
『ふつうのHaskellプログラミング』の図書館への返却期限も迫っているので、
とりあえずHaskellの勉強はまた今度ということにしようかと思います。
図書館から借りるのは、購入するかどうか判断するためという意味もあるんですけどね。
本当に勉強するなら、自分の手元に置いてじっくり勉強したいですし。