bytestring を使ったファイルコピー
ファイルコピー関数を実装する
import System.Environment import System.Directory import System.IO import Control.Exception import qualified Data.ByteString.Lazy as B main = do (fileName1:fileName2:_) <- getArgs copy fileName1 fileName2 copy source dest = do contents <- B.readFile source bracketOnError (openTempFile "." "temp") (\(tempName, tempHandle) -> do hClose tempHandle removeFile tempName) (\(tempName, tempHandle) -> do B.hPutStr tempHandle contents hClose tempHandle renameFile tempName dest)
テスト用ファイル
bart.txt
abcdefghijklmnopqrstuvvvvvvv
実行する
> stack ghc -- --make bytestringcopy.hs [1 of 1] Compiling Main ( bytestringcopy.hs, bytestringcopy.o ) Linking bytestringcopy ... > ./bytestringcopy bart.txt bort.txt > cat bort.txt abcdefghijklmnopqrstuvvvvvvv > cat bart.txt abcdefghijklmnopqrstuvvvvvvv
文字列を使ったプログラムを作成する場合、bytestring を使ったものに 書き換えるには多くの場合、修飾付きインポートして対応する関数の前に モジュール名を付け足すだけでいける。
文字列操作でもしパフォーマンスを上げる必要があるなら、 bytestring を試す価値がある。
所感
copy
は独自で定義した関数なのに、型宣言が無かったので一瞬よくわからなかった。
基本的に書いていただきたい。
世間は羽生フィーバーである。

- 作者: MiranLipovaca
- 出版社/メーカー: オーム社
- 発売日: 2017/07/14
- メディア: Kindle版
- 購入: 4人 クリック: 9回
- この商品を含むブログを見る