6

Haskell はまったくの初心者です。基本を理解するために、私は「Haskell を学んで大成功を収める」に取り組み始めました。ファイルから関数をロードするという単純な問題に固執しています。

ファイルが呼び出さbaby.hsれ、関数が含まれています

doubleMe x = x + x

何もありません。で保存しました/Users/me

GHCi に入力:load babyすると、次のエラーが表示されます。

ターゲット `baby' は、モジュール名またはソース ファイルではありません。

私は Mac で作業しており、baby.hsTextEdit セットを使用してファイルを作成し、プレーン テキスト/UTF-8 ファイルを生成しました。私のホームディレクトリは/Users/me、GHCiからこれを確認する方法がわかりませんが、GHCiを実行する前にbashから確認したときのものだと思います。

私が間違っていることは何か分かりますか?

4

5 に答える 5

4

@clintm が示唆するように、最初に doubleMe 関数を修正します。あなたが持っているものはエラーを与えます---しかし、あなたが報告しているエラーではありません。

ghci にファイルを見つけさせる最も簡単な方法は、ファイルが保存されているのと同じディレクトリから ghci を起動することです。ターミナル ウィンドウを開き、次のように入力します。

cd /Users/me
ls

ls現在のディレクトリの内容を一覧表示します。ファイルが表示されるはずです。もしそうなら、素晴らしいです!ghcibash プロンプトで入力すると、動作:load babyするはずです。そうでない場合は、ファイルが保存されていると思われる場所に保存されていません。TextEdit に戻るか、Spotlight を使用して、実際に配置した場所を確認します。

于 2011-10-12T11:08:46.160 に答える
2

モジュール行がありません。baby.hsの最初の行は

module Baby where

関係する限り、関数への引数としてのdoubleMe宣言が欠落しています。x

doubleMe x = x + x

そうでなければ、あなたの関数は何であるかを知りませんx

于 2011-10-12T00:01:02.323 に答える
0

@Alec: 「問題は、ファイルが実際には baby.hs.txt という名前だったことですが、Finder が何らかの理由で .txt 部分を隠しているため、それを見つけられませんでした。」

これはTextEditで回避できます...

  • baby.hs.txt ファイルを選択します

  • 2 本指でタップして、コンテキスト メニューをポップアップ表示します

  • [情報を見る] を選択して、ファイルの [情報] ダイアログを開きます

  • Name & Extension エリアに baby.hs と入力します

  • 情報ダイアログを閉じる

  • 別のダイアログで、本当に .hs 拡張子が必要かどうかを尋ねられます

  • あなたがそうしていることを確認し、あなたは準備ができています

于 2013-04-21T04:24:19.560 に答える
0

GHCi でテキスト ファイルを開き、コマンドを入力してみてください。

于 2019-03-06T02:09:51.970 に答える