or1ko's diary

日々を書きます

Haskell

ここ最近

ここ最近、いかの訳を読んでる The Typeclassopediaを訳しました, The Typeclassopedia - #3(2009-10-20) 毎日、少しづつ進めて、やっと、Categoryにきた。憧れのArrowまで、あとちょっと。

メモリが足らない

もっかいビルドしたら、いけた。

cabal-installをインストール

ref:404 Not Found xmonad使うならxmobarだろという無益な発想から,xmobarをインストールしようとした.しかし,上記のページにあるrunhaskell Setup.lhs configureをしたところ,いろいろなパッケージを要求された.足らないパッケージを一つ一つインスト…

思考の流れについて

思考の流れ ○をして、〜して、〜するRubyでは puts ARGF.each.take(n) Haskellでは main do cs <- getContents putStr (unlines (take n lines cs)) 人間がどう感じるか 人間は進化する 新たな知識 慣れ 最適化 ref:まつもとゆきひろが語る「ビューティフ…

:(コロン)演算子の定義と~(チルダ)演算子の話

今日、:(コロン)演算子がPreludeにあるかと思って探したけれどなかったので、調べた。 コロンそのもの ":" は Haskell のリスト構築子専用に予約され ていることに注意すること Haskell 98 Lexical Structure :(コロン)って予約されてたんだ。$(ドル)や.(ピ…

ブロックソートをHaskellで書いてみた(2回目)

ref:ブロックソートをHaskellで書いてみた - ori’s diary ref:Re: ブロックソートを Haskell で書いてみた - まめめも ku-ma-meさんの参考に少し直した。 import Data.List (sort, tails, inits, elemIndex, sortBy) import Data.Maybe (fromJust) main :: I…

ブロックソートをHaskellで書いてみた

ref: wikipedia:ブロックソート via:Haskell で Suffix Array - まめめも Suffix Arrayを構築するプログラムが非常に簡単に書けるので、ブロックソートも簡単に書けるのではないかと思い、やってみた。 計算量とメモリの空間効率は一切考えない。 import Dat…

utf8の標準入力を受け取る方法

ref:System.IO.UTF8 getContentsをPreludeからSystem.IO.UTF8に切り替える。 import Prelude hiding (getContents) import System.IO.UTF8 (getContents)

floorとsqrtにはまった話

型クラスを理解してなくてはまってしまった. nums n = [1..floor $ sqrt ( n / 2 )] 上記の関数に型をつけようとして,まず初めに nums :: Integral a => a -> [a] と書いた.今まで nums n = [1..n] に型をつける場合,Integralを指定してたからですが,や…

Project Euler - Problem 24

ref Problem 24 - Project Euler ref Problem 24 - PukiWiki Problem 24 は結構、手間取った。総当たり戦で解こうと頑張ったのが敗因。だいたいの計算量を考えながらプログラム作らないといけないとつくづく感じた。r とか t とか変な関数名をつけてしまった…

エラトステネスの篩(ふるい)2

ref:エラトステネスの篩(ふるい) - ori’s diary take 10 $ era [] [2..] といったように書くにはどうしたらいいのだろうか. と思っていたので,書き直してみた. import Data.List (findIndex) plist :: [Int] plist = era [2..] era :: [Int] -> [Int] era…

エラトステネスの篩(ふるい)

wikipedia:エラトステネスの篩 を実装してみた. main = print $ era [] $ step1 100 step1 n = [2..n] step2 ps ns = ps ++ [head ns] step3 ps ns = filter (\n -> (mod n (last ps)) /= 0) ns era [] ns = era (step2 [] ns) $ step3 (step2 [] ns) ns er…

3298 Antimonotonicity

ちょっと早いですが今週のPKUです。 import java.util.*; public class Main{ static{ Scanner s=new Scanner(System.in); s.next(); for(int n,x,y,c;(n=s.nextInt())>0;System.out.println(c)) for(x=c=1;n-->0;x=y) c=c%2!=1^x>(y=s.nextInt())?c+1:c; } …

Quick Sort

"あなたが一番好きなアルゴリズムを教えてください。"なる人力はてなの質問があったけれど、 haskellのQuick Sortに感動したのを思い出した。下の奴。 quicksort :: (Ord a) => [a] -> [a] quicksort [] = [] quicksort (x:xs) = quicksort [y | y <- xs, y …

合計を求めるプログラム

標準入力の各行にある数の合計を求めるプログラムを書いた。 main = do cs <- getContents print . sum . map read $ lines cs 以前はread関数を知らなかったので、ord関数とリスト操作を頑張ってやっていた。 readってすばらしい。けど、実数は読めないみた…