0

グラフ内の特定の頂点の近傍を計算する単純な haskell 関数をいくつか作成しました (以下を参照)。正常にコンパイルされますが、実行するadj g 1と次のエラーが発生します。Couldn't match expected type `Int' against inferred type `Integer'

コード:

module Test where
import Prelude
import Data.List


type Node = Int
type Edge = (Int, Int)

type Graph = ([Node], [Edge])

g = ([1,2,3,4,5,6], [(1,2),(2,3),(2,4),(5,6)])


adj :: Graph -> Node -> [Node]
adj (vs, []) n = []
adj (vs,((s,e):es)) n   | s==n = e:rec
                        | e==n = s:rec
                        | otherwise = rec
    where
    rec = adj (vs,es) n 
4

1 に答える 1

5

明示的な型シグネチャを追加します。

g :: ([Int], [(Int, Int)])

またはまだ良い

g :: Graph

これは7、関数が Int を使用しているのに対し、ような数値は任意の整数型にすることができ、デフォルトで Integer になるために発生します。

于 2012-10-28T22:21:01.973 に答える