Submit Search
Haskell超初心者勉強会11
0 likes
951 views
Takashi Kawachi
1 of 24
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
More Related Content
PDF
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
de:code 2017
PPTX
前期講座09
Takenori Nakagawa
PPTX
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
basicinc_dev
KEY
カジュアルにソースコードリーディング
Akihiro Okuno
PPTX
R -> Python
Kazufumi Ohkawa
PDF
Cloud computing competition by Hapyrus
Koichi Fujikawa
PDF
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Tsuyoshi Yamamoto
PDF
Rakuten tech conf
Koichi Fujikawa
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
de:code 2017
前期講座09
Takenori Nakagawa
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
basicinc_dev
カジュアルにソースコードリーディング
Akihiro Okuno
R -> Python
Kazufumi Ohkawa
Cloud computing competition by Hapyrus
Koichi Fujikawa
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Tsuyoshi Yamamoto
Rakuten tech conf
Koichi Fujikawa
What's hot
(20)
PDF
mlr-grep - レコード指向grep
Ryoichi KATO
PDF
awk v.s. bashどっちが強い?@OSC2011Tokyo
Ryuichi Ueda
PDF
TensorFlow White Paperを読む
Yuta Kashino
PDF
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
Satoshi Yamada
PDF
PostgreSQLとPythonとSQL
Satoshi Yamada
PDF
ジャパネットQB GPars
Takahiro Sugiura
PDF
Common LispでGPGPU
gos-k
PPT
20090107 Postgre Sqlチューニング(Sql編)
Hiromu Shioya
PDF
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
nakamura001
PDF
StarlingAssetmanagerの説明
utweb
PDF
200319 eash python_shareslide_functions
Hiroki Katayama
PDF
mmapパッケージを使ってお手軽オブジェクト管理
Shintaro Fukushima
PDF
Elasticsearch入門 pyfes 201207
Jun Ohtani
PDF
Haskell で CLI
Nobutada Matsubara
PPTX
入門機械学習6章
Kazufumi Ohkawa
PDF
Redis Intro Osc2010 Tokyo Spring
Makoto Ohnami
PDF
入門機械学習1,2章
Kazufumi Ohkawa
PDF
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Tsuyoshi Yamamoto
PDF
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
PDF
Log analysis by using elasticsearch,kibana and fluentd.
Tadayasu Yotsu
mlr-grep - レコード指向grep
Ryoichi KATO
awk v.s. bashどっちが強い?@OSC2011Tokyo
Ryuichi Ueda
TensorFlow White Paperを読む
Yuta Kashino
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
Satoshi Yamada
PostgreSQLとPythonとSQL
Satoshi Yamada
ジャパネットQB GPars
Takahiro Sugiura
Common LispでGPGPU
gos-k
20090107 Postgre Sqlチューニング(Sql編)
Hiromu Shioya
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
nakamura001
StarlingAssetmanagerの説明
utweb
200319 eash python_shareslide_functions
Hiroki Katayama
mmapパッケージを使ってお手軽オブジェクト管理
Shintaro Fukushima
Elasticsearch入門 pyfes 201207
Jun Ohtani
Haskell で CLI
Nobutada Matsubara
入門機械学習6章
Kazufumi Ohkawa
Redis Intro Osc2010 Tokyo Spring
Makoto Ohnami
入門機械学習1,2章
Kazufumi Ohkawa
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Tsuyoshi Yamamoto
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
Log analysis by using elasticsearch,kibana and fluentd.
Tadayasu Yotsu
Ad
Viewers also liked
(8)
PDF
Haskell超初心者勉強会14
Takashi Kawachi
PDF
Haskell超初心者勉強会20
Takashi Kawachi
PDF
Haskell超初心者勉強会17
Takashi Kawachi
PDF
Scala稟議の通し方(公開版)
鉄平 土佐
PDF
Elastic beanstalk と Docker と Play
Takashi Kawachi
PDF
Scalaでの例外処理
Takashi Kawachi
PDF
Scalaのオブジェクトの話
Yasuyuki Maeda
PDF
やさしいIteratee入門
Takashi Kawachi
Haskell超初心者勉強会14
Takashi Kawachi
Haskell超初心者勉強会20
Takashi Kawachi
Haskell超初心者勉強会17
Takashi Kawachi
Scala稟議の通し方(公開版)
鉄平 土佐
Elastic beanstalk と Docker と Play
Takashi Kawachi
Scalaでの例外処理
Takashi Kawachi
Scalaのオブジェクトの話
Yasuyuki Maeda
やさしいIteratee入門
Takashi Kawachi
Ad
More from Takashi Kawachi
(6)
PDF
例外のlogを快適に
Takashi Kawachi
PDF
MacroPyがすごい
Takashi Kawachi
PDF
Silhouette intro
Takashi Kawachi
PDF
最小 Hello World! チャレンジ
Takashi Kawachi
PDF
Sbt doctest
Takashi Kawachi
PDF
Sbt lock1
Takashi Kawachi
例外のlogを快適に
Takashi Kawachi
MacroPyがすごい
Takashi Kawachi
Silhouette intro
Takashi Kawachi
最小 Hello World! チャレンジ
Takashi Kawachi
Sbt doctest
Takashi Kawachi
Sbt lock1
Takashi Kawachi
Haskell超初心者勉強会11
1.
Haskell超初心者勉強会 11回 2013/7/29 Monday, July 29,
13
2.
今日は「すごいHaskell」本 9章 もっと入力、もっと出力 •入力ストリームからの読み込み •ファイルの読み書き •コマンドライン引き数 •ランダム性 •bytestring Monday, July
29, 13
3.
入力ストリーム •getContents :: IO
String •一度に全てを読み込まない。 メモリを食いつぶさない。 文字列(文字リスト)を遅延評価する。 import Data.Char main = do contents <- getContents putStr $ map toUpper contents Monday, July 29, 13
4.
ファイルの読み込み •hFoo は Handle
を引数に取る関数 •hGetContents は stdin の代わりに handle から読み込む •遅延評価 import System.IO main = do handle <- openFile “baabaa.txt” ReadMode contents <- hGetContents handle putStr contents hClose handle Monday, July 29, 13
5.
ファイルの読み込み withFile •開いて、関数実行して、閉じる •例外の場合でも確実に閉じる import System.IO main =
do withFile “baabaa.txt” ReadMode $ handle do contents <- hGetContents handle putStr contents Monday, July 29, 13
6.
Control.Exception の bracket •何かして、関数実行して、何かする withFile’ ::
FilePath -> IOMode -> (Handle -> IO a) withFile’ name mode f = bracket (openFile name mode) (handle -> hClose handle) (handle -> f handle) Monday, July 29, 13
7.
Control.Exception の bracketOnError •何かして、関数実行して、 例外のときだけ何かする •例:一時ファイルを開いて、 処理する、 例外のときだけ一時ファイルを消す Monday, July
29, 13
8.
その他の h •h じゃない版と同じ挙動 (handle
を取る意外は) hClose hGetContents hGetLine hPutStr hPutStrLn hGetChar Monday, July 29, 13
9.
readFile •readFile :: FilePath
-> IO String •開いて読んで閉じる import System.IO main = do contents <- readFile “baabaa.txt” putStr contents Monday, July 29, 13
10.
writeFile/appendFile •readFile :: FilePath
-> String -> IO () •開いて書いて閉じる import System.IO main = do contents <- readFile “baabaa.txt” writeFile “baabaacaps.txt” (map toUpper contents) Monday, July 29, 13
11.
コマンドライン引数 •System.Environment の getArgs/ getProgName import
System.Environment import Data.List main = do args <- getArgs progName <- getProgName putStrLn “The arguments are:” mapM putStrLn args putStrLn “The Program name is:” putStrLn progName Monday, July 29, 13
12.
ランダム性 •System.Random モジュール •RandomGen型クラス: ランダム性の源として使える型 •Random型クラス: ランダムな値として使える型 random ::
(RandomGen g, Random a) => g -> (a,g) mkStdGen :: Int -> StdGen Monday, July 29, 13
13.
乱数のテスト •random はピュアな関数 •乱数を続けて発生させるときは 戻り値の RandomGen
を次の乱数源 として使う > random (mkStdGen 100) :: (Int, StdGen) (-3650871090684229393,693699796 2103410263) > random (mkStdGen 100) :: (Int, StdGen) (-3650871090684229393,693699796 2103410263) Monday, July 29, 13
14.
randoms •ランダム値の無限リストを返す •RandomGen は返さない randoms ::
(RandomGen g, Random a) => g -> [a] Monday, July 29, 13
15.
randomR •ある範囲の乱数を返す •(下限, 上限) ->
(ジェネレータ) -> (乱数, 新ジェネレータ) randomR :: (RandomGen g, Random a) => (a, a) -> g -> (a, g) Monday, July 29, 13
16.
getStdGen •グローバル乱数ジェネレータを返す •プログラム実行毎に違う値 •1実行中は同じ値を返す getStdGen :: IO
StdGen Monday, July 29, 13
17.
newStdGen •グローバル乱数ジェネレータを更新 •新しい乱数ジェネレータを返す newStdGen :: IO
StdGen Monday, July 29, 13
18.
thunk •サンク(thunk)=遅延された計算 •リストの未評価の部分は thunk •文字列(文字リスト)は thunk
が 沢山なので遅い Monday, July 29, 13
19.
bytestring •リストに似たデータ構造 •要素は 1 byteのサイズ固定 Monday,
July 29, 13
20.
正格 vs 遅延 •
正格 bytestring (Data.ByteString) • thunk なし • 最初のバイトを評価する時、全体を評価 • 遅延 bytestring (Data.ByteString.Lazy) • 64KB chunk 毎に評価される • 64KB は L2 cache にフィットする 良いサイズ Monday, July 29, 13
21.
pack/unpack •リストと相互変換 •Word8 は 8
bits unsigned int pack :: [Word8] -> ByteString unpack :: ByteString -> [Word8] > import qualified Data.ByteString.Lazy as B > let x = B.pack [99, 97, 110] > x “can” > B.unpack x [99, 97, 110] Monday, July 29, 13
22.
fromChunks •正格ByteStringのリスト -> 遅延ByteString Monday, July
29, 13
23.
bytestring モジュール の関数 • Data.List
と似た関数 • head, tail, init, null, length, map, foldl, foldr, concat, takeWhile, filter など • http://hackage.haskell.org/package/ bytestring/ • System.IO と似た関数 • readFile :: FilePath -> IO ByteString など Monday, July 29, 13
24.
文字列用プログラムを bytestring 向けに 1. 修飾付き
import する 2. 対応する関数の前にモジュール名を 付け足す • まず文字列で書いて、性能が足りなか ったら bytestring を試すのがオススメ Monday, July 29, 13
Download