2つのイメージの共用体関数を作成したいのですが、これは2つのリストを結合するunionList関数を作成することから始めました。Haskell:リストユニオンを改善する
unionList :: String -> String -> String
unionList xs ys = xs ++ foldl (flip delete) ys xs
これは機能しますが、どのようにしたいのですか。
私はそれが同じように仕事をしたい:
input = unionList [’ ’,’ ’,’X’,’X’,’ ’] [’X’,’ ’,’X’,’ ’,’X’]
output = "X XXX"
これを達成するために行うの方法上の任意のアイデアを。
編集:私は最終的に2つのイメージの結合を作成しようとしています。
image 1 = [" XX ", image 2 = ["XX XX", type Img = [String]
" X X ", " X ",
" XX "] "XX XX"]
^
例
Input = (imgUnion (image 1) (image 2))
は私に2枚の画像の和集合を与える必要があります。
imgUnion :: Img -> Img -> Img
長さ1のリストにしか作用せず、パターンマッチング(リストと 'Char'リテラルで)を使用します。あなたが私が何を意味しているのか分からないなら、Googleの "pattern matching haskell"。次に、(空のリストに一致する)ケースを追加し、任意の長さのリストをサポートするために 'unionList'への再帰呼び出しを追加します。 – jberryman
'zipWith'を見てください。 –
@ReinHenrichs - 私はzipWithを調べて、イメージユニオンに使用します。しかし、私はunionList関数を最初に定義したように動作させ、zipWithと共に使用する必要があります。 – evian1