2012-04-29 2 views
1

私はhaskellにとってまったく初心者です。haskellについて、関数をファイルに定義する方法は?

は私が直接端末に入力しようとした

lucky:: Int->String 
lucky 7 = "LUCKY NUMBER SEVEN!" 
lucky x = "Sorry , youre out of luck pal!" 

なスニペットコードを持って、右ではないようです。 これをファイルに入れてこのファイルをロードする場合は、lucky関数を呼び出します。このファイルをどのように構築すればよいですか? ありがとうございました!

私はこの試みた:

module Main where 
lucky:: Int->String 
lucky 7 = "LUCKY NUMBER SEVEN!" 
lucky x = "Sorry , youre out of luck pal!" 


main = do 

をしかし、私は、端末での幸運を呼び出すしようとすると、私はこれを得た:

factorial.hs:7:8: Empty 'do' construct 
lucky 7 

<interactive>:1:1: Not in scope: `lucky' 

答えて

5

問題は、あなたの最後の行、main = doは、構文エラーがあるということです;ファイルに構文エラーがある場合、その中の関数はロードされません。メインの定義を取り出してロードしようとするとうまくいくはずです。

一般的に、ハスケル型の署名は、lucky :: Int -> Stringのようなスペーシングで書かれています。

+0

を入力して、単に「.HS」の拡張子を持つファイルを保存することで、GHCiのに関数定義をロードして使用することができますありがとうございました。修正済み: –

4

module Main whereまたはmain = do行は必要ありません。

あなたはその後、:loadとファイル名

+0

(あなたはあなたの答えを編集することができますか?誤ってそれを下降させて編集しない限り元に戻すことはできません:)) – huon

+1

@dbaupp:done :) – amindfv

関連する問題