【发布时间】:2020-12-06 20:03:20
【问题描述】:
我正在尝试实现一个简单的堆栈,但我很困惑为什么当我将一个整数压入堆栈时会得到一个无限列表。
所有其他功能都按我的预期工作,但我不明白push 的问题。当我尝试将一个空堆栈分配给已推送如下变量的自身时,它会出错:
λ > a = makeStack
λ > push 3 a
[3]
λ > a
[]
λ > a = push 3 a
λ > a
[3,3,3,3,3,3,3,3,3,3^CInterrupted.
type Stack a = [a]
makeStack :: Stack a
makeStack = []
push :: a -> Stack a -> Stack a
push a as = (a:as)
【问题讨论】: