我正在尝试Coursera算法课程并同时学习Haskell,但我现在已经陷入困境几个小时试图编译正在进行的工作.我已经尝试在GHCi中模拟大部分内容并且可以正常工作,但我一直都会遇到类型错误.欢迎有经验的眼睛
Couldn't match expected type `Int -> [Int] -> Bool'
with actual type `Int'
The operator `elem' takes two arguments,
but its type `Int' has none
In the expression: otherNode `elem` v''
In the expression: \ (GraphNode v'' _) -> otherNode `elem` v''
Run Code Online (Sandbox Code Playgroud)
```
import System.Random
import Data.List
-- GraphNode is a list of vertices represented, and its edges
data GraphNode = GraphNode [Int] [Int] deriving (Show, Eq)
type Graph = [GraphNode]
pickEdge :: StdGen -> Graph -> Graph
pickEdge gen graph =
let
-- pick a random element in Graph
(elem, gen') = randomR (1, length graph) gen
(GraphNode v es) = graph !! elem
--graph' = delete (GraphNode v es) graph
graph' = graph
-- pick a connected Node
(nodeIndex, _) = randomR (1, length es) gen'
otherNode :: Int
otherNode = es !! nodeIndex
myFilter :: GraphNode -> Bool
myFilter = \(GraphNode v'' _) -> otherNode `elem` v''
(GraphNode v' es') = head $ filter myFilter graph'
graph'' = delete (GraphNode v' es') graph'
in mergeNodes (GraphNode v es) (GraphNode v' es') : graph''
Run Code Online (Sandbox Code Playgroud)
Sea*_*rry 10
elem
在解压缩randomR
let语句第一行的结果时,您覆盖了该函数.elem
现在是一个Int.