2017-08-26 12 views
0

私は一緒に2つのリストを解凍しようとしているが、私は私の人生のために、なぜコードを実行しないのか理解できない。私は変数として宣言された2つのリストを持っており、それらを結合する関数を書いています。ハスケルジップ2リスト一緒に

letters = ["a","b","c"] 
numbers = ["1","2","3"] 

comb :: [a] -> [b] -> [(a,b)] 
comb _ [] = [] 
comb [] _ = [] 
comb (x:xs)(y:ys) = (x,y):comb xs ys 
は、ここで私の希望は、このコードを再帰的タプルにペアを結合しますが、私はそう、私は私が書いたことは機能している場合でも、わからないHaskellのに非常に新しいんだということである(コンパイラは」doesnの

それについて文句を言わないでください)。

私の問題は、私はこの行でコードを実行しようとすると、起動した

comb letters numbers 

と、コンパイラは、「エラー解析します。:モジュールヘッダ、輸入申告または予想されるトップレベルの宣言を」と言われます私はここで宣言しなければならないものは分かりません。助けてもらえますか?

+0

ファイルの途中に '櫛文字番号'式を入れただけですか? – melpomene

+0

私のファイルの一番下にあります。私はリストを宣言し、コードを書いてから、櫛文字を数字の行にします –

答えて

4

ファイルに式を入れることはできません。つまり、combは必要ありません。あなたの問題は、おそらく何をすべき

2 + 2 

に減少させることができた仕事れる、あなたの選択(ghci)の対話インタプリタにファイルをロードして、そこに式を入力します。

それとも、あなたのファイルにmainの定義を提供することができます:

main = print (comb letters numbers) 

これは、それが正常に実行可能にコンパイルできるようにする必要があります。

ただし、ファイルは一連の宣言です。プログラムのエントリポイントはmainというシンボルです。何を定義しても、mainは、プログラムを起動したときに何が実行されるのでしょうか(そのことはprintによって返されたIOアクションでなければなりません)。