shokosブログ

プログラミング

Haskell

Haskellでワンライナーで書いたフィボナッチ数列がなにをやっているのか

shokos Advent Calendar 2012六日目。ほとんどHaskell触ったことない人向けです。 社内勉強会で使おうと思っているネタ。 Haskellでフィボナッチ数列を定義すると、こうなります。 fib = 1:1:zipWith (+) fib (tail fib) 何をやっているのか、式の左側から説…

とびだせHaskellの森1

shokos Advent Calendar 2012四日目CAで「とびだせHaskellの森」という社内勉強会をしています! とびだせHaskellの森1 from Shoko Sasaki 初回はghciでのコマンドを色々試してもらいました。 ちょろっと遅延評価の説明とかもしつつ。結構人が集まって…

ghc7.0.4で、バイト文字列を日本語ファイル名で保存する方法

環境はmac、ghc7.0.4yesodアプリケーションで、アップロードされた画像ファイルをローカルに保存するときに、日本語ファイル名だと文字化けしてしまう問題が発生した。どうやらghc7.0.4は日本語ファイル名に対応していないっぽい。Haskell-jaに質問を投げて…

Bundleでghc-modをいれる方法

Bundleでghc-modをいれる方法 Bundleを持ってくる $ cd ~/.vim $ git clone http://github.com/gmarik/vundle.git ~/.vim/vundle.git vimrcにインストールしたいものを追加 vimrcのトップに書く set nocompatible filetype off set rtp+=~/.vim/vundle.git/ …

yesod0.10をいれてcabal installしたらコケた問題

開発環境:mac、ghc7.0.4新しく作ったyesodプロジェクトで、cabal installすると下記エラーがでた。 Resolving dependencies... Configuring language-javascript-0.4.9... cabal: The program alex version >=3.0 is required but the version found at /us…

Haskell Platform 2011.4.0.0をいれたよ!

Haskellのwebフレームワークyesodをいれようと思ったらattoparsecまわりの依存関係で怒られてインストールできず。(とあるライブラリはattoparsec0.10以上が必要だけど別のライブラリは0.10未満が必要なので競合するとかそんな感じで怒られた。ヤムチャ言い…

剰余もfor文も使わないでHaskellでfizzbuzzを書いてみた

遅延評価バンザイヽ(^o^)丿 fizz = cycle ["","","fizz"] buzz = cycle ["","","","","buzz"] fizzbuzz = zipWith fb [1..100] $ zipWith (++) fizz buzz where fb n a | a == "" = show n | otherwise = a cycleは循環リストを作る関数なので、GHCiでなにげ…

windowsでHaskellのIOまわりで日本語を文字化けなく表示させる方法

ghc7.0.2utf8-stringをインストール。 こちら参照 http://hackage.haskell.org/cgi-bin/hackage-scripts/package/utf8-string cabal install utf8-string System.IO.UTF8のモジュールを見ると、だいたいIO周りが揃っている! appendFile hGetLine openBinary…

CSVファイルで各行の先頭を見て、重複した値があったら取り出すスクリプト

業務で必要になったので、勉強がてらHaskellで書いてみた。 import Data.List.Split main = do csv <- readFile "./foo.csv" print $ check $ dataList csv --各行の先頭をリスト化する dataList :: String -> [String] dataList csv = foldr (\x xs -> (hea…

Haskellが短く書けてステキな件について

(主に私のまわりで)流行っているからというミーハーな理由でHaskellを勉強中です。単純に短く書けてすごいなと思います。 例えば、リストを引数に渡して、偶数の要素だけ返す関数なんかこれだけでおk。 evenList :: [Int] -> [Int] evenList [] = [] even…

Haskell版文芸的プログラミング

こちらのイベントに参加してきました第0回 スタートHaskell : ATND色々もりだくさんで、有意義な時間がすごせたと思っています。 どうもありがとうございました!そこで出たおもしろい話。文芸的プログラミングきいたことありますか?わたしは知らなかった。…

HaskellでStack実装

HaskellでStackを実装しました。 参加する予定だった初心者Haskell勉強会第3回 - [PARTAKE]の宿題になっていたやつです(結局いけなかったのだけど) data Stack a = Stack [a] deriving (Show) empty :: Stack a empty = Stack [] isEmpty :: Stack a -> Bo…

はじめてのHaskellめも

Haskellのインストール方法と最初のプログラムforMac(雪豹)Haskell Platformをインストールします。 Download Haskellけっこう時間かかりました。インストール終わったら、ターミナルで GHCi を起動してみよう! こんな感じで色々試せます。コマンドは前に…