2017-01-02 1 views
1

ハットンの新しいテキストを使って作業していますが、ghciで奇妙な動作が発生しました。関数altmapをテキスト・ファイルからロードすると、正しく動作します。私はそれをしていながらハスケル:GHCiスクリプトと直接入力

*Main Lib> altmap f g [] = [] 

*Main Lib> altmap f g (x:y:xs) = (f x):(g y):(altmap f g xs) 

*Main Lib> altmap (2*) (3*) [1,2,3,4,5,6] 

[2,6,6,12,10,18*** Exception: interactive:2:1-49: Non-exhaustive patterns in function altmap 

、誰かが「前奏曲」と「メインのLib」との違いを説明することができます。ただしGHCiのに直接同じ2行を入力するには、以下のようにエラーを与えますか?私はghcのrc2リリースを使用しています。8.0.2

+0

バージョン8より前のGHCiでは 'let ... = ...'を使用しなければならないことに注意してください。 – Zeta

答えて

0

altmapの定義は、古いものを上書きします。したがって、実際には1つのパターンしか定義されていません。 altmap f g xszipWith ($) (cycle [f,g]) xsのように書くことができることを

*Main Lib> altmap f g [] = []; altmap f g (x:y:xs) = f x : g y : atmap f g xs 

注:いずれかのマルチラインを同じ行の両方を定義したり、使用する必要が

ghci> x = 5 
ghci> x = 42 
ghci> print x 
42 

基本的に、あなたはこれをしませんでした。

>より前のモジュールは、現在インポートしているモジュールです。したがって、Main(すべての記号)とLibをインポートしました。詳細は、GHCのドキュメントをご覧ください。

+0

Hm。重複を発見したので、私の答えを削除する必要がありますか? – Zeta

関連する問題