私は haskell を初めて使用し、問題について少し助けが必要です。XML ファイルがあり、その中の 2 つのものを解析したいと考えています。1 つは数字のペアで、2 番目は単なる文字です。私は 2 つの関数を使用して各要素を解析していますが、その関数の結果は "Maybe String" でなければなりません。そうでなければ機能しません。
問題は、結果を表示すると、常に「Just」が添付されていることです。したがって、(1,2)とBのようなものを表示したい場合
I will have (Just "1", Just "2") and Just "B"
数字については、解決策を得ました。ペアの解析から取得したリストを操作するために、この関数を作成しました。
pair:: [(Maybe String, Maybe String)] -> [(Int, Int)]
pair [] = []
pair ((Just x, Just y) : ls) = (read x, read y) : pair ls
それは正常に動作します。しかし、文字を含むリストに対して同じことを試みましたが、機能しません。
ここに私のコードがあります:
letter :: [Maybe String] -> [Char]
letter [] = []
letter (Just x : ls) = read x : letter ls
これを実行すると、ペアのリストが正しく表示され、このエラーが発生します
myfile.hs: Prelude.read: no parse
なぜこうなった?読み取り機能が問題ですか?