2006-06-13
■ エラトステネスの篩 
何となくエラトステネスの篩。
primes = sieve [2..]
where
sieve (n:ns) = (:) n $ sieve $ filter (`cannotDivBy` n) ns
n `cannotDivBy` k = n `mod` k /= 0
実行結果です。
*Main> take 10 primes [2,3,5,7,11,13,17,19,23,29] *Main> primes !! 1000 7927
追記:nobsunの「双子素数」のリスト内包表記がかっこいーなー。
primes = sieve [2..] sieve (p:ps) = p:sieve [p'| p'<-ps, p' `mod` p /= 0] s f g x = f x (g x) twins = filter ((2==) . uncurry subtract) $ s zip tail primes
■ カリー化 
distance (a, b) = abs $ subtract a b cdist a b = distance (a, b) cdist' = curry distance
実行結果です。
*Main> distance (10, 3) 7 *Main> distance (3, 10) 7 *Main> cdist 10 3 7 *Main> cdist 3 10 7 *Main> cdist' 3 10 7 *Main> cdist' 10 3 7 *Main> map (cdist' 5) [0..10] [5,4,3,2,1,0,1,2,3,4,5]
■ Windows XPでHaskellコンパイラ(GHC)をインストールする手順 
Windows XPで、
をインストールする手順を以下に示します。
- (1) http://www.haskell.org/ghc/download.html へ行く。
- (2) Current Stable Releaseの下にある番号(たとえば6.4.2)のリンクをたどる。
- (3) Binary Packagesの中からWindows 95/98/ME/2000/XP (x86) (standalone)を選ぶ。
- (standalone)と(Visual Studio version...)がありますが、結城は前者を選びました。後者はどういうのか知りません。
- (4) Windows用のインストーラ(たとえば ghc-6-4-2.msi )をダウンロードする。
- (5) ダウンロードしたインストーラを開いてインストールを開始する。
- (6) ウイザード(Setup Wizard)の指示に従って進む。
- (7) 最後にオプションを聞かれる。
- 結城はTypical(典型的インストール)ではなくComplete(全部インストール)を選びました。
- (8) 環境変数PATHにGHCのパス(たとえば C:\ghc\ghc-6.4.2\bin)を追加する。
- (9) コマンドプロンプトを開いて、以下のように表示されるかチェックする。
> ghc --version The Glorious Glasgow Haskell Compilation System, version 6.4.2 > ghci --version The Glorious Glasgow Haskell Compilation System, version 6.4.2
- (10) GHCiを動かしてみる。
> ghci ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 6.4.2, for Haskell 98. / /_\\/ __ / /___| | http://www.haskell.org/ghc/ \____/\/ /_/\____/|_| Type :? for help. Loading package base-1.0 ... linking ... done. Prelude> print "Hello, Haskell" "Hello, Haskell" Prelude> :q Leaving GHCi.
- (11) プログラム main.hs を作って、GHCを動かしてみる。
> type main.hs module Main where main = do print "Hello, Haskell" > ghc -o main.exe main.hs > main "Hello, Haskell"
コメント
トラックバック - http://haskell.g.hatena.ne.jp/hyuki/20060613