Drkcore

12 10 2010 Haskell Tweet

スレッドでgzip(Haskell)

RWH 24.2はなんかいろいろハマったのでメモ。まずzlibとreadlineのパッケージをmacbookにインストール。

perlのcpanに対応するコマンドはhaskellではcabalというものがある。

cabalコマンドの使い方

Cabal は Haskell のパッケージ管理システムです。枠組みとしての Cabal と、コマンドの cabal があり、間違いやすいです。

間違ってた。

zlibをcabalでインストール

sudo cabal install zlib

続いてreadlineを。

sudo port install readline

で

sudo cabal install readline

readlineが見つからないというエラー。仕方ないのでアーカイブをダウンロードしてきて

runhaskell Setup.hs configure \
--configure-option=--with-readline-includes="/opt/local/include" \
--configure-option=--with-readline-libraries="/opt/local/lib"
runhaskell Setup.hs build
sudo runhaskell Setup.hs install

で入れた。でもcabal に--configure-option渡してもOKな感じはする。

コードもControl.ExceptionではなくてControl.OldExceptionをインポートする。

import Control.Concurrent (forkIO)
import Control.OldException (handle)
import Control.Monad (forever)
import qualified Data.ByteString.Lazy as L
import System.Console.Readline (readline)

import Codec.Compression.GZip (compress)


main = do 
  maybeLine <- readline "Enter a file to compress> "
  case maybeLine of 
    Nothing   -> return ()
    Just ""   -> return ()
    Just name -> do
         handle print $ do
                   content <- L.readFile name
                   forkIO (compressFile name content)
                   return ()
         main
  where compressFile path = L.writeFile (path ++ ".gz") . compress

で、コンパイル

ghc --make Compressor.hs

これが動かなくて悩んだ。というかコンパイルできるんだけど、圧縮ファイルが作成されない。

なんでかなー?とReal World Haskellのコメント見てたら、-threadオプションが必要とのこと。

ghc --make -threaded Compressor.hs

で無事に動いた。

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan,John Goerzen,Don Stewart
オライリージャパン / ¥ 3,990 ()
在庫あり。

追記 101012

cabal install readline --configure-option=--with-readline-includes="/opt/local/include" \
--configure-option=--with-readline-libraries="/opt/local/lib"

でいけた。

でも、実行したらエラー

/Users/kzfm/.cabal/lib/readline-1.0.1.0/ghc-6.12.3/HSreadline-1.0.1.0.o: unknown symbol `_rl_basic_quote_characters'
ghc: unable to load package `readline-1.0.1.0'

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021