Haskell-タイプ `(Int、Integer) 'を` Pos'と一致させることができませんでした

休暇

私は現在Haskellを学んでいて、現在問題を抱えています。

これは私のコードです:

data Pos = Pos (Int, Int) deriving (Show, Eq)                             
allCoordinates :: [Pos]
allCoordinates = concat [(zip (allHelper x) [0..8]) | x<-[0..8]]

allHelper ::Int -> [Int]
allHelper x = [x | y<-[0..8]]

その特定のデータ型を使用する必要があり、これが原因で少し問題が発生しています。

コードが次のように記述されている場合、このコードは完全に正常に機能します。

type Pos = (Int, Int)
allCoordinates :: [(Int, Int)]
allCoordinates = concat [(zip (allHelper x) [0..8]) | x<-[0..8]]

しかし、私はこのビットを編集する必要があります:

concat [(zip (allHelper x) [0..8]) | x<-[0..8]]

それが動作するように:

allCoordinates :: [Pos]

それはおそらく単純な問題であり、私は少し精神的なブロックを持っていますが、誰かが助けることができますか?

ありがとうございました

ウィレムヴァンオンセム

あなたが書く場合:

type Pos = (Int, Int)

お持ちでない新しいタイプの構築:あなたはタイプの別名を構築し、あなたが交換できるようPos(Int, Int)コードに。したがって、署名付きの関数f :: [(Int,Int)]f :: [Pos]と同等です。

コードをクリーンアップして、次のように書くことができます。

allCoordinates :: [Pos]
allCoordinates = [ (x,y) | x <- [0..8], y <- [0..8]]

またはさらにクリーン(ただし、おそらく理解するのがやや難しい):

allCoordinates :: [Pos]
allCoordinates = (,) <$> [0..8] <*> [0..8]

型シグニチャを使用するという事実の欠点は、その型に多数の関数が定義されている可能性があることです。おそらく、同じ名前(型クラスの場合)で、実装が異なる関数を定義する必要があります。その場合、データ型を定義できます

data Pos = Pos (Int,Int)

これで、コンストラクターを使用して新しいを定義しましたPosこれで、上記のコードは機能しなくなりますが、生成したタプルでコンストラクターを呼び出すことで簡単に変更できます。そう:

allCoordinates :: [Pos]
allCoordinates = [ Pos (x,y) | x <- [0..8], y <- [0..8]]

1つのコンストラクターで型を定義し、そのコンストラクターに1つのパラメーターがある場合は、を使用できますnewtypeこれで型を定義しましたが、Haskellは内部的にコンストラクターでラップおよびアンラップせず、単にタプルを別の方法で処理するように最適化できます。

newtype Pos = Pos (Int,Int)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

haskell-タイプ '(Char、Int)'と '[Char]'エラーを一致させることができませんでした

分類Dev

Haskell:タイプ `[Char] 'と` Char'を一致させることができませんでした

分類Dev

Haskell-タイプ「PersistEntityBackendrecord0」を「SqlBackend」と一致させることができませんでした

分類Dev

Haskellはタイプ `[] 'を` IO'と一致させることができませんでした

分類Dev

Haskell-タイプ[]をIOと一致させることができませんでした

分類Dev

Haskell:エラー:タイプ「[]」を「IO」と一致させることができませんでした

分類Dev

Haskell:タイプを一致させることができませんでしたか?

分類Dev

Haskell、Control.Lens:タイプ「[Language.Haskell.TH.Syntax.Dec]」を「Language.Haskell.TH.Syntax.Exp」と一致させることができませんでした

分類Dev

Haskell、Control.Lens:タイプ「[Language.Haskell.TH.Syntax.Dec]」を「Language.Haskell.TH.Syntax.Exp」と一致させることができませんでした

分類Dev

Haskell readFile:期待されるタイプ '[String]'を実際のタイプ 'IOString'と一致させることができませんでした

分類Dev

Haskell:期待されるタイプ「a1」を実際のタイプ「a」と一致させることができませんでした

分類Dev

Haskellは期待されるタイプ「ItemNat」を実際のタイプ「()」と一致させることができませんでした

分類Dev

haskellは期待されるタイプを実際のタイプ 'Bool'と一致させることができませんでした

分類Dev

Haskell '期待されるタイプと実際のタイプを一致させることができませんでした'

分類Dev

Haskellタイプエラー「タイプ `Char 'と` t0 [Char]'を一致させることができませんでした」

分類Dev

Haskellで「期待されるタイプIOa0をintと一致させることができなかった」を修正する方法は?

分類Dev

gtk2hs:予期されたタイプ 'IO [Int]'を実際のタイプ '[Int]'と一致させることができませんでした

分類Dev

期待されるタイプ '(Int, Int)' を実際のタイプ '[t0]' と一致させることができませんでした

分類Dev

期待されるタイプ「a」と実際のタイプ「Integer」を一致させることができませんでした

分類Dev

期待されるタイプ 'a-> Int'を実際のタイプ 'IOArrow StringInt'と一致させることができませんでした

分類Dev

Haskellプログラミング割り当て、「期待される型「Int」を実際の型「[a0]-> Int」と一致させることができませんでした」およびその他のいくつかのエラー

分類Dev

Haskell関数のタイプを一致させることができません

分類Dev

Haskellは期待される型 '[(Char、b0)]'を実際の型 '(Char、Int)'と一致させることができませんでした

分類Dev

haskellでクラスタイプを特定のタイプと一致させることができません

分類Dev

一部の関数では「 'T [S]'を 'std :: vector <int>'と一致させることができませんでした」が、同じパラメータリストを持つ他の関数では一致しませんでした

分類Dev

「タイプ `Maybe 'と` IO'を一致させることができませんでした。期待されるタイプ:IO文字列実際のタイプ:Maybe文字列」Haskellで

分類Dev

Haskellは期待されるタイプ 'Bool'をタイプ[t0]に一致させることができません

分類Dev

Haskellのソフトウェアトランザクショナルメモリ:期待されるタイプSTM a0を実際のタイプIOと一致させることができませんでした()

分類Dev

タイプ「[Char]」を「Data.Text.Internal.Text」と一致させることができませんでした

Related 関連記事

  1. 1

    haskell-タイプ '(Char、Int)'と '[Char]'エラーを一致させることができませんでした

  2. 2

    Haskell:タイプ `[Char] 'と` Char'を一致させることができませんでした

  3. 3

    Haskell-タイプ「PersistEntityBackendrecord0」を「SqlBackend」と一致させることができませんでした

  4. 4

    Haskellはタイプ `[] 'を` IO'と一致させることができませんでした

  5. 5

    Haskell-タイプ[]をIOと一致させることができませんでした

  6. 6

    Haskell:エラー:タイプ「[]」を「IO」と一致させることができませんでした

  7. 7

    Haskell:タイプを一致させることができませんでしたか?

  8. 8

    Haskell、Control.Lens:タイプ「[Language.Haskell.TH.Syntax.Dec]」を「Language.Haskell.TH.Syntax.Exp」と一致させることができませんでした

  9. 9

    Haskell、Control.Lens:タイプ「[Language.Haskell.TH.Syntax.Dec]」を「Language.Haskell.TH.Syntax.Exp」と一致させることができませんでした

  10. 10

    Haskell readFile:期待されるタイプ '[String]'を実際のタイプ 'IOString'と一致させることができませんでした

  11. 11

    Haskell:期待されるタイプ「a1」を実際のタイプ「a」と一致させることができませんでした

  12. 12

    Haskellは期待されるタイプ「ItemNat」を実際のタイプ「()」と一致させることができませんでした

  13. 13

    haskellは期待されるタイプを実際のタイプ 'Bool'と一致させることができませんでした

  14. 14

    Haskell '期待されるタイプと実際のタイプを一致させることができませんでした'

  15. 15

    Haskellタイプエラー「タイプ `Char 'と` t0 [Char]'を一致させることができませんでした」

  16. 16

    Haskellで「期待されるタイプIOa0をintと一致させることができなかった」を修正する方法は?

  17. 17

    gtk2hs:予期されたタイプ 'IO [Int]'を実際のタイプ '[Int]'と一致させることができませんでした

  18. 18

    期待されるタイプ '(Int, Int)' を実際のタイプ '[t0]' と一致させることができませんでした

  19. 19

    期待されるタイプ「a」と実際のタイプ「Integer」を一致させることができませんでした

  20. 20

    期待されるタイプ 'a-> Int'を実際のタイプ 'IOArrow StringInt'と一致させることができませんでした

  21. 21

    Haskellプログラミング割り当て、「期待される型「Int」を実際の型「[a0]-> Int」と一致させることができませんでした」およびその他のいくつかのエラー

  22. 22

    Haskell関数のタイプを一致させることができません

  23. 23

    Haskellは期待される型 '[(Char、b0)]'を実際の型 '(Char、Int)'と一致させることができませんでした

  24. 24

    haskellでクラスタイプを特定のタイプと一致させることができません

  25. 25

    一部の関数では「 'T [S]'を 'std :: vector <int>'と一致させることができませんでした」が、同じパラメータリストを持つ他の関数では一致しませんでした

  26. 26

    「タイプ `Maybe 'と` IO'を一致させることができませんでした。期待されるタイプ:IO文字列実際のタイプ:Maybe文字列」Haskellで

  27. 27

    Haskellは期待されるタイプ 'Bool'をタイプ[t0]に一致させることができません

  28. 28

    Haskellのソフトウェアトランザクショナルメモリ:期待されるタイプSTM a0を実際のタイプIOと一致させることができませんでした()

  29. 29

    タイプ「[Char]」を「Data.Text.Internal.Text」と一致させることができませんでした

ホットタグ

アーカイブ