私は迷路ジェネレータを作成しており、迷路を印刷して視覚化したいと考えています。私は壁のタイプと、それらの壁のランダムな迷路を生成する関数を持っています。私はprettyPrint(weightedGrid 10 10)
を呼び出すときモナドタイプを表示可能にする
import qualified Data.Graph.Inductive as Graph
import Data.Graph.Inductive (Gr, prettyPrint)
data WeightedWall = WeightedWall (Int, Int, Int) Orientation deriving (Eq)
weightedGrid :: MonadRandom m => Int -> Int -> Gr() (m WeightedWall)
はしかし、私はこのエラーを取得する:
Ambiguous type variable ‘m0’ arising from a use of ‘prettyPrint’
prevents the constraint ‘(Show
(m0 WeightedWall))’ from being solved.
Probable fix: use a type annotation to specify what ‘m0’ should be.
私はこの問題を解決するために私のコードで何をしないのですか?
MonadRandom'あなたは 'M'になりたいです何 '? – 4castle
私はハスケルを初めて熟知しており、何をすべきか分からない。 weightedGridのランダム性を注入する関数は、それが役立つならControl.Monad.RandomのgetRandomRです。 – chronologos
'm'のいくつかの値は[' Rand'](http://hackage.haskell.org/package/MonadRandom-0.5.1/docs/Control-Monad-Trans-Random-Lazy.html#t:ランド)または「IO」。コンパイラは、 'weightedGrid'を呼び出した結果に型の注釈を与えない限り、どちらを使うべきかを知りません。 – 4castle