有人能向我解释一下我如何将一个元素推送到ocaml中的堆栈中,并检查它是否是整数吗?我想您应该检查一下它是否在一个可变数字="0123456789中。大多数情况下,我不确定你应该在函数中使用什么变量,我知道你会传递一个堆栈变量,但"整数"变量会是什么?
let PushI (*what var goes here an int? or digit?*) (stk : stackVal list) : stackVal list =
let meth_Pop (stk : stackVal list) : stackVal list =
(*just pops a value from the top of the stack if nothing in stack will return an error*)
match stk with
| h::t -> t
| _ -> ERROR::stk
如果没有看到类型stackVal
的定义,很难回答这个问题。
让我们假设它看起来像这样:
type stackVal = Int of int | Float of float
然后我会亲自定义pushI来获取int
参数。
您可能在从字符流中获取令牌的某些上下文中工作。在这种情况下,您可能希望将所有的推送函数定义为使用字符串,而不是实际的数值。
如果你告诉我们(StackOverflow回答者(更多关于你的问题,我们可能会提供更多帮助。
对于问题的第一部分,您可以查看meth_Pop
函数。它表明堆栈是一个列表,堆栈的顶部是列表的头部(函数中的h
(,堆栈的其余部分是列表的尾部(函数中为t
(。
要使用上面的stackVal
将int值推送到堆栈中,您需要这样的东西:
let push myInt myStack = Int myInt :: myStack