我正在和Miran Lipovaca一起学习Haskell的"为了好大学而学习哈斯克尔!".在第82页,它说
如果模式匹配失败,列表推导将只移动到下一个元素,失败的元素将不会包含在结果列表中.
例:
ghci> let xs = [(1,3),(4,3),(2,4),(5,3),(5,6),(3,1)]
ghci> [a+b | (a, b) <- xs]
[4,7,6,8,11,4]
Run Code Online (Sandbox Code Playgroud)
我的问题是模式匹配是如何失败的?他的意思是什么?我真的不明白.可能是因为我的英语很弱.我请你举个例子,因为我觉得这本书没有给出任何模式匹配失败的例子.
我想过如果列表包含一个列表解析无法处理的类型然后它移动到下一个元素但是如果我以这种方式更改列表:
let xs = [(1,3),(4,3),(2,4),(5,3),True,(5,6)]
Run Code Online (Sandbox Code Playgroud)
然后它甚至没有编译,因为它"无法匹配预期的类型"......
haskell functional-programming list-comprehension pattern-matching
我想创建一个Fibonacci数列表.我想调用fib x,它应该给我一个列表,直到第x个元素.我如何实现这一目标.
我会像这样计算fib数:
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
Run Code Online (Sandbox Code Playgroud)
如何将结果放入列表中以调用列表直到我需要的元素?
我想打印出1 000 000 000到1 999 999 999.我认为这将是一项简单的任务,但是eclipse告诉我一些关于内存错误的信息.我怎么能这样做?我想要一个文本数据,其中所有数字从1000000000到1999999999都在新行中写下来.我想在控制台中打印出来然后只需复制并粘贴到.txt数据就可以了,但遗憾的是没有.
我的代码:
public static void main(String[] args) {
int number = 1000000000;
do {
System.out.println(number);
number = number +1;
} while (number < 2000000000);
}
Run Code Online (Sandbox Code Playgroud)
你会如何解决这个问题?请帮我.