在Haskell中挣扎着列表

时间:2014-11-17 15:07:41

标签: haskell

我遇到了Haskell中的列表列表问题。

这是我的功能:

create_matrix :: (Read t, Integral t) => [String] -> t -> [[t]]
create_list_of_lists (x:xs) num = [read x `div`z | z <- [1..num]] : create_list_of_lists xs num

当我像这样运行时:

create_list_of_lists ["1212","3232"] 3

我得到所需的输出,即

[[1212,606,404],[3232,1616,1077]

但它错过了最后的']',并向我提出了这个错误:

Exception: hondt.hs:39:1-81: Non-exhaustive patterns in function create_list_of_lists

我想这与类型有关,但我不知道我做错了什么。

1 个答案:

答案 0 :(得分:3)

正在发生的事情是,由于Haskell的懒惰,GHCi在收到它们时打印出前两个子列表,但后来遇到了错误。此错误是因为您尚未定义create_list_of_lists的所有可能输入,即第一个参数为空时。你需要

create_list_of_lists [] num = ???
create_list_of_lists (x:xs) num = [read x `div`z | z <- [1..num]] : create_list_of_lists xs num

如果没有[]的条款,您最终会调用create_list_of_lists [] num,目前尚未定义。

相关问题