положить элемент в стек ocaml - PullRequest
0 голосов
/ 01 апреля 2020

Может ли кто-нибудь объяснить мне, как я могу поместить sh элемент в стек в ocaml, а также проверить, является ли оно целым числом? Я предполагаю, что вы бы проверили, находится ли она в переменной di git = "0123456789. В основном я не уверен, какую переменную вы должны использовать в функции, я знаю, что вы передадите переменную стека, но что будет" integer " "переменная будет?

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 

1 Ответ

0 голосов
/ 01 апреля 2020

Довольно сложно ответить на этот вопрос, не видя определения типа stackVal.

Давайте предположим, что это выглядит так:

type stackVal = Int of int | Float of float

Тогда я бы лично определил pushI для примите параметр int.

Возможно, вы работаете в каком-то контексте, где вы получаете токены из потока символов. В этом случае вам может потребоваться определить все ваши функции pu sh, которые будут принимать строки, а не фактические значения чисел c.

Если вы расскажете нам (ответчик StackOverflow) подробнее о вашей проблеме, мы сможем помогите немного больше.

Для первой части вашего вопроса вы можете посмотреть на функцию meth_Pop. Он показывает, что стек является списком, а верхняя часть стека является заголовком списка (h в функции), а остальная часть стека является хвостом списка (t в функции) .

Чтобы вывести sh значение int в стек, используя вышеуказанное значение stackVal, вы получите что-то вроде этого:

let push myInt myStack = Int myInt :: myStack
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...