首页 > 解决方案 > Haskell 错误“数据构造函数不在范围内”

问题描述

我对这个构造函数有疑问:

data Variables = Name Char | Value Int deriving Show 
data Tree = Empty| Node Char Tree Tree deriving Show
................
buildTree :: String -> Tree -> [Variables] -> (String,Tree,[Variables])
buildTree (x:y:z:xs) Empty v 
|isAlpha x && y == '=' = buildTree xs Empty newvar
.................
where  newvar = v ++ (Variables x (digitToInt z))

错误是:数据构造函数不在范围内:变量 :: Char -> Int -> [Variables]

         newvar = v ++ (Variables x (digitToInt z))

标签: haskellconstructor

解决方案


Variables是一种可以用NameholdingCharValueholding构造的类型Int。您可能需要创建该类型Value x的实例。Variables

除此之外,Variables x (digitToInt z)根据提供的定义,这似乎是无稽之谈,因为没有Variables数据构造函数需要 2 个参数。


推荐阅读