IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

2016-05-01から1ヶ月間の記事一覧

ファイル読み込みでのモナドを使っている感じ

do記法でのファイル読み込み import System.IO printFile :: String -> IO() printFile path = do handle <- openFile path ReadMode contents <- hGetContents handle putStrLn contents hClose handle 型を確認する。 > :t openFile openFile :: FilePath …

PipesでHelloWorld

PipesでHelloWorld Prelude Pipes P> runEffect $ (yield "Hello World" ) >-> P.stdoutLn Hello World Producerの型 Prelude Pipes P> :t (yield "Hello Wordl") (yield "Hello Wordl") :: Monad m => Proxy x' x () [Char] m () Consumerの型 Prelude Pipe…

cabalのサンドボックスでモジュールを取り込みghci(?)を利用する

サンドボックスを作る。 $ cabal sandbox init Writing a default package environment file to ... モジュールをサンドボックスを取り込む。 $ cabal install pipes-safe ghciではなくて、cabal上で、対話用のオプション(repl)を指定して起動する。 $ cabal…

Haskellでgithubに公開されているパッケージを取得してサンドボックスで実行するまで

ポーカーゲームを例にしてGithubからパッケージを取得して実行するまでの手順をまとめる。 github.com 作業ディレクトリを作る。 aaa:work03 foo$ mkdir poker aaa:work03 foo$ cd poker gitからパッケージを取得する。 aaa:poker foo$ git clone https://gi…

Applicativeファンクタを使って見る

最初の取っ掛かりとして、Applicativeファンクタの例としてわかりやすいのは、データコンストラクタを使う例ではないかと。 データ型を定義 > :i Emp data Emp = Emp {first_name :: String, last_name :: String} -- Defined at testapp01.hs:1:6 instance …

^Mを取り除く

csvデータの改行コードが違っていたのでどうしたものかと。 とりあえず:%s/\r/\r/gでできました。 改行コード2回重ねるのに違和感がありますが。

pureをControl.Applicative.LiftA0と思う

引数が3個の場合 *> :t liftA3 liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d 引数が2個の場合 *> :t liftA2 liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c 引数が1個の場合 (あたかもLiftA1) *> :t liftA …