2016-10-31 48 views
-7

当我尝试使用':l文件'在其中加载文件时,GHCi爆炸。我可能会做什么错?

mySeq :: Integer -> Integer -> Integer -> [Integer] 
mySeq x y z 
    | x < y = [] 
    | otherwise = (x : sequence (x - z) y z) 
+11

是否有错误信息伴随着爆炸? – Thilo

+8

您是否有意在递归调用中使用'mySeq'而不是'sequence'?即'x:mySeq(x-z)y z'而不是'x:sequence(x-z)y z'? – Alec

+1

类型系统很少妨碍你的行为,除非你做了一些附带的事情。利用类型系统来查找错误。 – Carcigenicate

回答

2

我不明白你正在尝试与sequence那里做。

如果你只是想建立这四个元素的列表,怎么样

mySeq :: Integer -> Integer -> Integer -> [Integer] 
mySeq x y z 
    | x < y = [] 
    | otherwise = [x, x-z, y, z] 

或者,如@Alec指出,也许你的意思做递归调用(的mySeq代替sequence):

mySeq :: Integer -> Integer -> Integer -> [Integer] 
mySeq x y z 
    | x < y = [] 
    | otherwise = (x : mySeq (x - z) y z) 
+0

第二种方法是正确的。 –