【发布时间】:2012-11-06 05:28:04
【问题描述】:
我正在尝试在 Haskell 中编写替换算法。
我已经用单个构造函数S::[(String, a)] -> Subst a 定义了一个多态数据类型Subst a,如下所示:
data Subst a = S [(String, a)]
我现在想写一个函数 single::String -> a -> Subst a 来构造一个只替换单个变量的函数
这是我尝试过的:
single::String -> a -> Subst a
single s1 (Subst a) = s1 a
但是,我收到此错误:Not in scope: data constructor 'Subst'
有人知道我做错了什么吗?
【问题讨论】:
-
n.b.如果您创建的数据类型仅包含“一个”值且仅包含一个构造函数,则可以使用
newtype来提高效率。newtype Subst a = Subst [(String, a)]。按照惯例,对于新类型,通常将构造函数命名为与类型名称相同。
标签: haskell substitution