最新

val it : α → α = fun

<<  2007/05  >>

2007/05/22 ghci のロードって

http://madscientist.jp/~ikegami/diary/20070522.html#p01 そういえば、ライブラリを作っていてインストールしたものがロードできなくて悩んだことがあります。

たとえば、こんな感じね。

% ls
Data        LICENSE   Text    dist  example           test
HaskellNet  Setup.hs  _darcs  doc   haskellnet.cabal
% ghci -package HaskellNet
   ___         ___ _
  / _ \ /\  /\/ __(_)
 / /_\// /_/ / /  | |      GHC Interactive, version 6.6, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
Loading package haskell98 ... linking ... done.
Loading package parsec-2.0 ... linking ... done.
Loading package html-1.0 ... linking ... done.
Loading package network-2.0 ... linking ... done.
Loading package QuickCheck-1.0 ... linking ... done.
Loading package HUnit-1.1 ... linking ... done.
Loading package Crypto-4.0.3 ... linking ... done.
Loading package mtl-1.0 ... linking ... done.
Loading package time-1.0 ... linking ... done.
Loading package HaXml-1.13.2 ... linking ... done.
Loading package HaskellNet-0.2 ... linking ... done.
Prelude> :m HaskellNet.SMTP
module main:HaskellNet.SMTP is not loaded
Prelude> :l HaskellNet.SMTP
[1 of 3] Compiling HaskellNet.Auth  ( HaskellNet/Auth.hs, interpreted )
[2 of 3] Compiling HaskellNet.BSStream ( HaskellNet/BSStream.hs, interpreted )
[3 of 3] Compiling HaskellNet.SMTP  ( HaskellNet/SMTP.hs, interpreted )
Ok, modules loaded: HaskellNet.SMTP, HaskellNet.BSStream, HaskellNet.Auth.

インストールしたライブラリよりも、ローカルなファイルの方が優先されるというルールなんでしょうね。でもエラーメッセージがさすがに不親切すぎ。はじめてあの「not loaded」ってのを見たときには何が起きたかわからず、かなりビビりました。

(どうでもいい追記)

あれっ、なんで QuickCheck とか HUnit とかをロードしているんだろ?

Crypto が依存しているらしい。おいおい、ライブラリのビルドには必要ないんじゃないのそれ。……build-depends はライブラリとかではなくパッケージのプロパティだから、ライブラリといわず実行ファイルといわず、同じ依存関係になっちゃうのか。うわ、気付いていなかった。なにそれ。