Частично проблема в том, что GHC не знает, что toList Nil
вернет пустой список.
*List> :i toList
toList :: List a -> [a] -- Defined at List.hs:7:0-5
Он только знает, что вернет список типа a
, но не знает, что такое a
- отсюда и сообщение «переменная неоднозначного типа a». Один из способов обойти это - просто указать тип списка, который будет возвращать toList:
fromEmptyList = TestCase $ assertEqual "" [] (toList (Nil) :: [Int])
Изменение этого и удаление первых двух строк List_Test (он не будет искать функцию main
в именованном модуле, который не назван Main
), дал мне такой результат:
$ runghc List_Test.hs
Cases: 1 Tried: 1 Errors: 0 Failures: 0