Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell中my函数的更改类型签名_Haskell_Type Signature - Fatal编程技术网

Haskell中my函数的更改类型签名

Haskell中my函数的更改类型签名,haskell,type-signature,Haskell,Type Signature,我和哈斯凯尔之间有些问题,我对这门语言还很陌生。我让我的函数运行和工作,但它只检查整数,我被要求使它与类型a元素一起工作。如果能帮上点忙,我将不胜感激 我需要的类型签名是: allElementsReachable :: (Eq a) => Int -> a -> [(a,a)] -> [a] nextSteps :: (Eq a) => [a] -> [(a,a)] -> [[a]] 这是我目前的代码: oneHop :: (Eq a) =>

我和哈斯凯尔之间有些问题,我对这门语言还很陌生。我让我的函数运行和工作,但它只检查整数,我被要求使它与类型a元素一起工作。如果能帮上点忙,我将不胜感激

我需要的类型签名是:

allElementsReachable :: (Eq a) => Int -> a -> [(a,a)] -> [a]

nextSteps :: (Eq a) => [a] -> [(a,a)] -> [[a]]
这是我目前的代码:

oneHop :: (Eq a) => a -> [(a,a)] -> [a]
oneHop n [] = []
oneHop n ((x,y):xs)
 | n == x = y : oneHop n xs
 | otherwise = oneHop n xs


nextSteps :: [Int] -> [(Int,Int)] -> [[Int]]
nextSteps (x:xs) l = map (concatenateList (x:xs)) (path xs l (oneHop x l))

path :: [Int] -> [(Int,Int)] -> [Int] -> [Int]
path x l [] = [1]
path [] l y = y
path (x:[]) l (y:ys)
 | y == x = oneHop x l
 | otherwise = path [x] l ys
path (x:xs) l (y:ys)
 | y == x = path xs l (oneHop x l)
 | otherwise = path (x:xs) l ys

concatenateList :: [Int] -> Int -> [Int]
concatenateList (x:xs) n = x : concatenateList xs n
concatenateList [] n = [n]

allElementsReachable :: Int -> Int -> [(Int,Int)] -> [Int]
allElementsReachable 0 x l = [x]
allElementsReachable n x l = allElementsReachable2 (n-1) l (oneHop x l)

allElementsReachable2 :: Int -> [(Int,Int)] -> [Int] -> [Int]
allElementsReachable2 n l [] = []
allElementsReachable2 0 l x = x
allElementsReachable2 n l (x:xs) = (allElementsReachable2 (n-1) l (oneHop x l)) ++ (allElementsReachable2 n l xs)

在助手函数中尝试将尽可能多的其他项转换为
a
,当然,考虑到这些是您正在处理的图形项。因此,我需要将其他助手函数中的所有
Int
更改为
a
?@AlexCagira:并非所有
Int
s,因为
allegementsreachable
中的第一个参数看起来像一个“跃点计数器”。因此,关于跃点计数器的内容仍然是
Int
s,这更多的是关于
Int
的内容,但通常更多的是一个图形节点。因此,只有对的列表
[(Int,Int)]
,我输入的元素之一
Int
,以及输出列表
[Int]
。我必须把它们改成
a