首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Haskell的“`HashMap`”?

如何使用Haskell的“`HashMap`”?
EN

Stack Overflow用户
提问于 2014-04-26 21:53:08
回答 1查看 2.6K关注 0票数 2

我的预期结果如下:

代码语言:javascript
复制
*Main> unify [Var "x",Var "x"] [Obj "a", Obj "a"] NoBindings

Bindings fromList [("x",a)]

但是,这会导致以下错误:

代码语言:javascript
复制
Not in scope: data constructor H.HashMap

我的代码如下:

代码语言:javascript
复制
import qualified Data.List as L
import qualified Data.HashMap.Strict as H
import qualified Data.HashSet as S


data Pattern = Var String
         | GVar Int
         | Obj String
         | Funct String [Pattern]
         | Prim String
 deriving Eq

data Bindings = Fail
          | NoBindings
          | Bindings (H.HashMap String Pattern)
 deriving Show


unify :: [Pattern] -> [Pattern] ->Bindings -> Bindings
unify _ _ Fail              = Fail

unify [Var x,Var x1] [Obj a,Obj a1] NoBindings
        | x==x1     = Bindings (H.HashMap x a)
            | otherwise = error $show x1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-26 22:08:47

Data.HashMap.Strict模块公开数据类型HashMap,但不导出其数据构造函数。相反,它导出emptysingleton函数:

代码语言:javascript
复制
empty :: HashMap k v
singleton :: (Hashable k) => k -> v -> HashMap k v

后者可用于您的情况:

代码语言:javascript
复制
unify [Var x,Var x1] [Obj a,Obj a1] NoBindings
        | x==x1     = Bindings (H.singleton x a)
        | otherwise = error $show x1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23316914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档