2010-11-29 8 views
2

私はこのスレッドを見つけましたHaskell List Comprehension今、この関数のすべてのセルは空白ですが、コンパイルしようとすると次のエラーメッセージが表示されます。blakにpropを書くのに助けが必要です:: Sudoku→[Pos](Haskell)

{- 
Property that states that all cells in the blanks list are actually blank 
-} 
prop_blank_pos :: Sudoku → Bool 
prop_blank_pos sud = (rows sud) !! (fst pair) !! (snd pair) ≡ Nothing 
    where pair = blanks sud 

could't一致期待タイプ '(B')の最初の引数「FST」namley一対 '(!!)' namley FSTの第二における推論タイプに対して '[順位]' 「(行)bankey(」行シュッド「)

編集

私の質問は、私は、ブランクから取得するリストがリストである[順位](何もない、何も[含むさの第一引数でペア )、(何もない、何もない)...など。

2つの要素のタプルがすべて実際には "Nothing"であること、つまり[Pos]のすべての要素が(Nothing、Nothing)であることを確認します。どのように私はこれをチェックすることができます誰もコードサンプルを書くことができます、私はhaskellの構文では良くないです。ここで編集2

はここでsodukuの例

example :: Sudoku 
    example = 
    Sudoku 
     [ [Just 3, Just 6, Nothing,Nothing,Just 7, Just 1, Just 2, Nothing,Nothing] 
     , [Nothing,Just 5, Nothing,Nothing,Nothing,Nothing,Just 1, Just 8, Nothing] 
     , [Nothing,Nothing,Just 9, Just 2, Nothing,Just 4, Just 7, Nothing,Nothing] 
     , [Nothing,Nothing,Nothing,Nothing,Just 1, Just 3, Nothing,Just 2, Just 8] 
     , [Just 4, Nothing,Nothing,Just 5, Nothing,Just 2, Nothing,Nothing,Just 9] 
     , [Just 2, Just 7, Nothing,Just 4, Just 6, Nothing,Nothing,Nothing,Nothing] 
     , [Nothing,Nothing,Just 5, Just 3, Nothing,Just 8, Just 9, Nothing,Nothing] 
     , [Nothing,Just 8, Just 3, Nothing,Nothing,Nothing,Nothing,Just 6, Nothing] 
     , [Nothing,Nothing,Just 7, Just 6, Just 9, Nothing,Nothing,Just 4, Just 3] 
     ] 

編集3 で数独は、私はあなたが正確に必要なものはよく分からない

data Sudoku = Sudoku { rows :: [[Maybe Int]] } 
deriving (Show, Eq) 

答えて

4

を定義する方法です、コンパイラエラーの意味を教えてください。

fstはタプル(a, b)で動作しますが、[Pos]です。

pairがタプルを返すか、またはリストファンクションを使用して1番目と2番目の要素を取得します。最初の要素はhead pair、2番目の要素はpair !! 1です。

pairはタプルを返すようにしたいと思われますが、実際には起こっていません。 blanks sudPosのリストを返しています。


編集:わかりましたので、Posはタプルで、あなたは[Pos](Nothing, Nothing)に等しいだけのタプルが含まれているかどうかを確認します。

Daveがコメントで言ったように、これを行うには、all (==(Nothing, Nothing)) the_listのようなものを試すことができます。 the_listのすべての要素が(Nothing, Nothing)に等しい場合、これはTrueを返します。

prop_blank_pos :: Sudoku -> Bool 
prop_blank_pos sud = all (==(Nothing, Nothing)) (blanks sud) 
+2

おそらく 'pair'はタプルのリストです。 Johanはリストのすべての要素の条件を確認するために 'all'を使う必要があります。 – dave4420

+0

lisztが次のようなエラーメッセージを表示しているときに表示されます 予想されるタイプ '[(多分a、多分a1)]'と一致できませんでした ' 推測タイプ[Pos] ' all ' (空白のままで)式では、これを動作させるためにコンパイラをどのように喜ばせるか考えていますか? :) – Darren

+0

あなたのモジュールをghciにロードした後、 ':i Pos'の出力は? ':t blanks'の出力は何ですか?コンパイラは 'Pos'が決して'(Nothing、Nothing) 'にならないことを伝えているので、それをそれらの値と比較することは意味がありません。 –

関連する問題