这是我如何定义我的堆栈类型。可能有更好的方法,但现在让我们坚持下去。在haskell中定义此堆栈类型的仿函数
data Stack' v = Stack' [v] Int deriving (Show)
因此,像推”看起来像这样
push' :: (Ord v) => Stack' v -> v -> Stack' v
push' (Stack' l m) a = if m <= length l then Stack' l m else Stack' (l ++ [a]) m
但我不能够定义仿函数这一点。我的这种尝试没有说“模式中的分析错误:v”
instance Functor Stack' where
fmap f (v l) = (map f v) (l)
有人可以帮我定义函数吗?
一个避免的方式'+'和'这里length'是保持单子和存储的剩余容量,而不是最大的。 – hammar