在Haskell中创建映射的隐式方法
我在这个创建地图的例子上举步维艰。但我无法编译/复制它在Haskell中创建映射的隐式方法,haskell,Haskell,我在这个创建地图的例子上举步维艰。但我无法编译/复制它 data State r = S (Maybe r) (Map Char (State r)) data NumberSystem = Zero | Bin | Dec | Oct automata :: State NumberSystem automata = s where s = S Nothing ([(d,s10) | d <- ['1'..'9']] ++ [('0',s0)]) s0 =
data State r = S (Maybe r) (Map Char (State r))
data NumberSystem = Zero | Bin | Dec | Oct
automata :: State NumberSystem
automata = s where
s = S Nothing ([(d,s10) | d <- ['1'..'9']] ++ [('0',s0)])
s0 = S (Just Zero) ([('b',s2)] ++ [(d,s8) | d <- ['0'..'7']])
s2 = S (Just Bin) ([('0',s2),('1',s2)])
...
数据状态r=S(可能是r)(映射字符(状态r))
数据编号系统=零|本|十二月|十月
自动机::状态编号系统
自动机=s其中
s=s无([(d,s10)| d可能?你确定这个Map
实际上是Data.Map.Map
?@joschuck简单的答案是,如果没有GHC 7.8,你就不能使用overloadedList
。确保这里显示的Map
类型实际上是Data.Map.Map
,而不是类型Map k=[(k,v)]的本地定义的类型别名
,与示例代码一样。您应该提供错误消息和完整的代码列表,以便其他人能够提供清晰简洁的答案。可以使用以下代码创建映射:M.fromList[('a',“first”),('b',“second”)]
,其中M是数据。映射导入符合条件。在第二个代码块中使用的语法是错误的,因为haskell函数应用程序看起来像f x
,而不是f(x)
@joschuck leftaroundabout并不是问你是否有数据.Map
。他问的是,在示例代码中,Map
是否指的是Data.Map.Map
,这不是你系统的属性。它可能是一个类型别名,如type Map k v=[(k,v)]
,在本示例前面定义,或类似内容。
s = S Nothing (fromList([(d,s10) | d <- ['1'..'9']] ++ [('0',s0)]))
s0 = S (Just Zero) (fromList([('b',s2)] ++ [(d,s8) | d <- ['0'..'7']]))