のびのびなHaskell日記

2006-07-05モジュール

「フツケル」の250頁

 --ファイル名:greeting.hs
module Greeting where
hello = putStr "Hello,World!"
 --ファイル名:greeting_client.hs
import Greeting
main = hello
  • greeting_client.hsを実行してみました。
D:\Development\PracticeHaskell\work20060704>runghc greeting_client.hs
Hello,World!
  • 次にgreeting_client.hsをコンパイルしてみましたが、エラーが出ました。今のところ原因不明(メモ)
D:\Development\PracticeHaskell\work20060704>ghc greeting.hs -o greeting
C:/ghc/ghc-6.4.2/libHSrts.a(Main.o)(.text+0x1d):Main.c: undefined reference to `
__stginit_ZCMain'
C:/ghc/ghc-6.4.2/libHSrts.a(Main.o)(.text+0x43):Main.c: undefined reference to `
ZCMain_main_closure'
collect2: ld returned 1 exit status
 --Greetingモジュールの中身そのままで、ファイル名をgreeting_mod.hsに変更
module Greeting where
hello = putStr "Hello,World!"
 --greeting_client.hsの実行結果
D:\Development\PracticeHaskell\work20060704>runghc greeting_client.hs
Could not find module `Greeting':
  use -v to see a list of the files searched for
  (imported from greeting_client.hs)

Greetingモジュールをロードするために、Greetingというファイルを探したけど見つからなかったということですね。モジュール名とファイル名は一致していないといけないのかも

  • ファイル名をgreeting.hsに戻して、モジュール名をGreetingからGreetingModに変更してみてgreeting_client.hsを実行してみました。
 --ファイル名:greeting.hs
module GreetingMod where
hello = putStr "Hello,World!"
 --greeting_client.hsを実行した結果
D:\Development\PracticeHaskell\work20060704>runghc greeting_client.hs
./Greeting.hs: file name does not match module name `GreetingMod'

ファイル名がモジュール名と一致していないと分かりやすいエラーが表示されました。やはりファイル名とモジュール名は一致していないといけないということでしょうか(^_^;)

トラックバック - http://haskell.g.hatena.ne.jp/NobiNobiKota/20060705