嘿嘿stackoverflowers,
作为一名 PHP 开发人员,我学到了很多关于编码的知识。用于使用 Python 进行开发,Python 是一种非常容易学习的编码语言。不是在大学里,我必须用 Haskell 写一些代码,这对我来说真的很不一样。
我们的任务之一是编写一个随机生成器。我可以解释一下:
我的想法是生成一个带有随机数的列表。
让我们说:
import Control.Monad (replicateM)
import System.Random
// max random numbers
maxInt = 5
// list
randList = replicateM (fromIntegral maxInt) (randomRIO(1, 6))
此代码在 GHCI 中使用let
定义maxInt
and可以正常工作randList
,但在我.hs
要解释的文件中,它不起作用..
这里的错误是:
Ambiguous type variable `a0' in the constraints:
(Num a0)
arising from the literal `1' at code.hs:11:59
(Random a0)
arising from a use of `randomRIO'
at code.hs:11:49-57
Possible cause: the monomorphism restriction applied to the following:
randList :: IO [a0] (bound at code.hs:11:1)
Probable fix: give these definition(s) an explicit type signature
or use -XNoMonomorphismRestriction
In the expression: 1
In the first argument of `randomRIO', namely `(1, 6)'
In the second argument of `replicateM', namely `(randomRIO (1, 6))'
Failed, modules loaded: none.
我尝试了非常不同的事情,比如
import System.Random
addToList :: Int -> Int
addToList 0 = [randomRIO(1, 6)]
addToList n = [randomRIO(1, 6)] ++ addToList (n-1)
但我对 Haskell 和 PHP OOP 程序员真的很陌生,没有整数、浮点数、列表、数组的类型问题,Haskell 对我来说真的很愚蠢;)
谢谢!