Прежде чем пометить этот вопрос как дублированный, я уже прочитал эту тему: Haskell прочитал целое число и список списков из файла , и решение не решило мою проблему.
I 'Я пытаюсь прочитать содержимое в файле, который содержит эту структуру:
String, String, [(Int, Int, Int)]
Файл выглядит примерно так:
Name1 22/05/2018 [(1, 5, 10), (2, 5, 5), (3, 10, 40)]
Name2 23/05/2018 [(1, 10, 10), (2, 15, 5), (3, 50, 40),(4,20,5)]
Name3 22/05/2018 [(4, 2, 1), (5, 2, 2), (6, 50, 3), (1,2,3)]
Name4 23/05/2018 [(1, 3, 10), (2, 1, 5), (3, 2, 40), (6,20,20)]
В Haskell я создал эту функцию для чтения содержимогофайла и «преобразовать» это содержимое в мой пользовательский тип.
rlist :: String -> [(Int, Int, Int)]
rlist = read
loadPurchases :: IO [(String, String, [(Int, Int, Int)])]
loadPurchases = do s <- readFile "tes.txt"
return (glpurch (map words (lines s)))
glpurch :: [[String]] -> [(String, String, [(Int, Int, Int)])]
glpurch [] = []
gplpurch ([name, dt, c]:r) = (name, dt, (rlist c)) : gplpurch r
Но когда я пытаюсь выполнить функцию «loadPurchases», я получаю эту ошибку: неисчерпывающие шаблоны в функции glpurch.
Используя: set -Wall, я получил это справочное сообщение:
<interactive>:6:1: warning: [-Wincomplete-patterns]
Pattern match(es) are non-exhaustive
In an equation for `glpurch':
Patterns not matched:
([]:_:_)
([_]:_)
([_, _]:_)
((_:_:_:_:_):_)
Моя проблема заключается в том, как создать все эти условия.
Я буду очень признателен, если кто-нибудь сможет помочьсоздать те условия, которые могут определить «условие остановки»