HaskellでProject Eulerに挑戦してみた
- 2008-08-24
- カテゴリ: その他のプログラミング
- タグ: アルゴリズム Haskell
id:gomi-boxに触発されて、Project Eulerに挑戦してみた。
Project Eulerみたいな、アルゴリズム的なものを書いて一人でくねくねする遊びは、Haskellとの相性が良すぎる。
コードは続きで。
[Haskell] Monad周りで自分なりに考えてみたこと
- 2008-08-07
- カテゴリ: その他のプログラミング
- タグ: 安易な発想 Haskell
Haskellを真面目に勉強し始めて10日ほど経つ。一応、Yet Another Haskell Tutorialをだいたい読み終わったわけだが、最後のモナドの章だけは断念した。日本語で何回説明されてもわからないものを英語で説明されてもわかるわけがない。
とはいえ、一応Haskellの文法などは勉強してみて、モナドについてもいろいろと聞きかじってみたわけで、自分なりに「モナドってこんなものなのかな?」っていうようなものはつかめたような気がする。なので、自分なりの理解やら疑問やらをメモっておこうかと思う。
自分の考えの整理のために書き連ねるので、もし間違っていたり考え違いをしているところがあれば (そんなところばっかだろうけど) 、容赦なく突っ込んでもらいたい。
そういえばTsukuba.Rに行ってきたんだった
- 2008-07-28
- カテゴリ: その他のプログラミング
- タグ: R 遅延評価 関数志向
なんか興奮してHaskellとか書いてたけど、一昨日Tsukuba.Rに参加して、Rを勉強してきたんだった。そこで、syou6162先生に教わったsapply()を使ってfizzbuzzを書いてみよう。
↓な感じ。
fizzbuzz <- function(x, y) { sapply(x:y, function(n) { ifelse(n %% 15, ifelse(n %% 3, ifelse(n %% 5, n, "Buzz"), "Fizz"), "FizzBuzz") }) }
sapply()を使ったから、for文が消えて少しRっぽくなった気がするけど、いまいち芸がない。もう少し工夫ができそう。
Haskellっぽいfizzbuzz書けた!
- 2008-07-28
- カテゴリ: その他のプログラミング
- タグ: Haskell 入門 関数志向
昨晩、突然ひらめいてHaskellでfizzbuzzを書いてみた。
fizzbuzz :: Integer -> Integer -> [String] fizzbuzz x y | x > y = [] | (mod x 15) == 0 = "FizzBuzz" : fizzbuzz (x + 1) y | (mod x 3) == 0 = "Fizz" : fizzbuzz (x + 1) y | (mod x 5) == 0 = "Buzz" : fizzbuzz (x + 1) y | otherwise = (show x) : fizzbuzz (x + 1) y
なんかすごくHaskellっぽいコードを書けたような気がするんだけどどうだろう?少なくとも、依然書いた↓のfizzbuzzよりは手続き色が抜けてるんじゃないかな?
XREAでMTOS (Movable Type Open Source)を導入してみた
- 2008-04-10
- カテゴリ: その他のプログラミング
XREAのサーバーにMovable Typeを導入するというのは何回もやってきたことなのだが、今回はSSHを使ってやってみた。シェルをほとんど使ったことがなかったから苦戦したが、以前よりもかなり早く導入できるようになった。
今までは、シェルを知らなかったから、↓のようなすごく非効率的なことをやっていた。
- MTOSのダウンロードページからZIPをダウンロードする。
- ZIPを展開
- FTPでアップロード (2000ファイル近くある上に、しばしば失敗する)
- ちまちまと権限を設定
今回はXREAのサーバーにSSHで接続してやってみた。
[Java] こういうときどうすればいいの?
- 2008-03-25
- カテゴリ: その他のプログラミング
- タグ: 安易な発想 Java Haskell
例えば、数値を分数のまま四則演算する有理数クラスが↓のようになっていたとします。
public class Rational { private int numerator = 0; private int denominator = 1; public Rational(int numerator, int denominator) { ... } public Rational add(Rational x) { ... } public Rational subtract(Rational x) { ... } public Rational multiply(Rational x) { ... } public Rational divide(Rational x) { ... } }
当然、このクラスを使う側では↓のようなコードを書くわけですね。
Rational add(Rational x, Rational y) { return x.add(y); }
20年の眠りを醒ましてしまったようだ
- 2008-03-17
- カテゴリ: その他のプログラミング
コンパイラ関係の本を読んで勉強したくて、大学の図書館で探してみた。
とはいうものの、文系単科大学の図書館だからコンパイラ関係の本など探してもほとんどない。
やっとの思いで見つけたのが↓。
1981年刊行とのことだったが、とりあえず借りてみた。
↓貸出期限票を見たところ、俺は20年の眠りを醒ましてしまったらしい。
しかし、目次を見てみると、用語や内容は現在と大きくは変わらないっぽい。言語処理系の本は古い本ほど良いという話は本当だったんだな。
TeXで新しいフォントを使うためのバッチファイル
- 2008-02-28
- カテゴリ: その他のプログラミング
- タグ: Tips TeX LaTeX バッチ
TeXでアームド・レモンというフォントを使えるようにするために使ったバッチファイルをメモ。アームド・レモンのTTFファイル(ArmedLemon.TTF)はC:\WINDOWS\Fontsにインストール済み。
@echo off set FONT=ArmedLemon set TEXDIR=C:\LaTeX set FONTDIR=%TEXDIR%\share\texmf\fonts copy "%FONTDIR%\tfm\ptex\jis.tfm" "%FONTDIR%\tfm\ptex\%FONT%.tfm" cd "%FONTDIR%\vf\ptex" "%TEXDIR%\bin\makejvf.exe" "%FONT%" "%FONT%" move "%FONT%.tfm" "%FONTDIR%\tfm\dvips" echo %FONT% H %FONT%.ttf>>"%FONTDIR%\map\dvipdfm\base\cid-x.map" "%TEXDIR%\bin\mktexlsr.exe"
PDFで表示するだけならこれだけで充分っぽい。なぜこれで充分なのかはまだわかっていない。時間と余力があるときに解説エントリを書ければいいなと思っている。
「LaTeX で多書体 --- 任意のフォントを扱う方法」というサイトを参考にした。
LaTeXで文系論文を書いてみる
- 2008-02-27
- カテゴリ: その他のプログラミング
- タグ: ○○で文系論文を書いてみる TeX LaTeX Tips 環境構築
以前、DocBookで文系論文を書いてみるというようなこと言っていたが、結局それは断念してしまった。FOPの日本語組版のレベルが低すぎて使い物にならない上に、DocBook XSLも基本的には英語圏向けであまり日本語環境に向いているとは言えなかったから。なので、結局はTeXを使ってレポートを書くことにした。今さらTeXというのも古臭い感じがして嫌なのだが、他に良い選択肢がないので仕方がない。
ということで、今度はWindows XP上にLaTeX環境を構築するにあたってのメモ書きを残しておこうと思う。
ちなみに、TeXに入門するまでの間に、86世代の人たちにだいぶお世話になった。この場を借りて感謝。