2009/12/03

Haskell import AF_INET

不要なものを import するなんて!
ってのが何原理主義なんだか分からないですが
fromMaybe だけ使いたい! って思ったら
import Data.Maybe (fromMaybe)
ってしろって色々書いてあります
素敵

AF_INET が欲しいと思ったんで
import Network.Socket (AF_INET)
ってしてみました
$ ghci af_inet.hs
GHCi, version 6.10.4: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main ( af_inet.hs, interpreted )

af_inet.hs:1:23: Module `Network.Socket' does not export `AF_INET'
Failed, modules loaded: none.
あら、"does not export" って言われてしまった

Prelude Network.Socket> :i AF_INET
data Family = ... | AF_INET | ...
-- Defined in Network.Socket.Internal
なるほど
AF_INET は Family っていう型の data constructor らしい
だから素直には呼べないのかな?
import Network.Socket (Family)
これは通るんだけど
$ ghci af_inet.hs
GHCi, version 6.10.4: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main ( af_inet.hs, interpreted )
Ok, modules loaded: Main.
*Main> AF_INET

<interactive>:1:0: Not in scope: data constructor `AF_INET'
そうよね、うんうん

残念ながらプログラミング Haskell にも記述が無く
色々ググっていたんですが、結局どうすればいいかっていうと
import Network.Socket (Family(AF_INET))
こうすればいいみたいでした
どこでこの記述見つけたんだかもぉ忘れちゃった

原理主義疲れる

0 件のコメント:

コメントを投稿