2011-10-19 17 views
2

高次関数でこの関数を作り直す必要があります。 lookupTitleを変更する方法はわかりませんが、もう一方はすでに変更されています。しかし、bookAuthorsにエラーがあります。charcter USでの語彙エラー

type Title = String 
type Author = String 
data Product = Book Title Author 
        | Video Author 
        | CD Title Integer Author 
        deriving (Eq,Show) 

getTitle (Book title _) = title 
getTitle (Video title ) = title 
getTitle (CD title _ _) = title 

getTitles l = map (\x->getTitle x) l 
lookupTitle _ [] = Nothing 
lookupTitle x (y:ys) | getTitle y == x = Just y 
        | otherwise  = lookupTitle x ys 

lookupTitles a b = map (\x->lookupTitle x b) a 

bookAuthors l = filter author l 
         where author (Book _ _) = True 
            author _ = False 

なぜですか?

+0

さらに詳しい情報を提供する必要があります。あなたは何をしようとしていますか、どのような結果を期待していますか? –

+0

あなたの問題は、Mikhail Glushenkov氏がインデントを付けて指摘しているように、Haskellでインデントがどのように機能するかについての次のリンクを見てください:http://en.wikibooks.org/wiki/Haskell/Indentation – HaskellElephant

答えて

2

字下げの問題のようです。 Thisはエラーなしでコンパイルされます。

+1

'bookAuthors'のように見えます。モノスペースフォントを使用できるエディタを強くお勧めします。特にHaskellのような言語では空白が重要です。 – MatrixFrog

+0

私はGHCとメモ帳を使用します。 HUGSはコンパイルもしません。 bookAuthorsの前にスペースがなくても。 私は答えのコードをコピーして動作し始めました! –

+0

@АртёмЦарионов:メモ帳以外のテキストエディタを試す必要があります。これは単にプログラミングに使用することを意図したものではありません。 Windows上でHaskellとうまく動作するエディタについては、次のリンクを参照してください。メモ帳に慣れているなら、notepad ++を試してみることをお勧めします:http://www.haskell.org/haskellwiki/Windows。 – HaskellElephant

関連する問題