问题:
制作代表名词-动词-名词句子的三元组的所有组合。为了做到这一点,我决定尝试让这个问题更容易阅读,因为verbComb的未来看起来并不"干净",通过处理数据类型并遇到了这个问题。请帮忙!
我的代码:
type Letter = Char
data Word = Noun (Letter, Letter, Letter)| Verb (Letter, Letter, Letter)
deriving (Ord, Eq, Show)
data Sentence = (Word, Word, Word)
deriving (Show)
stops = "pbtdkg"
vowels = "aeiou"
vowelComb :: String -> String -> [(Char, Char, Char)]
vowelComb s v = combine s v s ++ combine (reverse s) v s ++ combine s v (reverse s)
where combine f s t = [ (x,y,z) | x <- f, y <- s, z <- t, x == 'p']
verbComb :: Word -> Word -> Sentence
verbComb = undefined
错误:
chp10.hs:88:21:
Ambiguous occurrence ‘Word’
It could refer to either ‘Chp10.Word’, defined at chp10.hs:75:1
or ‘Prelude.Word’,
imported from ‘Prelude’ at chp10.hs:28:8-12
(and originally defined in ‘GHC.Types’)
Failed, modules loaded: none.
如错误所示,称为Word
的类型与已在范围中的名为Word
的类型冲突,该类型是隐式包含的Prelude
模块的一部分。要使用您的类型,您需要将其完全限定为Chp10.Word
,或者隐藏另一个冲突类型:
import Prelude hiding (Word)