Хорошо, на этот раз я проясню, задача функции1 - проверить строку, если она появляется с символом '?' вещь, он поместит остальную часть строки в список. если нет, то он будет хранить все в стеке, как я могу это сделатьХранение данных в таблице в Haskell
function2 :: [String] -> [([Char], [Integer]->[Integer])]
function1 :: [String] -> [Integer] -> ([Integer], String)
function1 [] stack = (stack, "")
function1 (x:xs) stack
| x == "?" = function2 xs -- # map the tokens after '?' to functions
-- # and put them into dictionary for
-- # function1's later use
| x == "m" = function1 xs ((read x :: b):stack)
| x == isJust lookup = eval xs (f stack)
...
where lookup = -- # lookup(f) is the function that is mapped from the token x
Если вы хотите, чтобы ваша функция возвращала другой тип, сделайте его возвратом другого типа. Если 'function2' не возвращает' b', вам нужно написать функцию для преобразования вывода функции 'function2' в нечто вроде' b', а затем применить ее к 'function2'. – jrockway
нет, нет, нет, должен быть какой-то способ обойти это возвращение, например, написать что-то еще вокруг функции2, которая вернет b, но функция2 все равно будет выполнять свою работу – Rn2dy
ну, это именно то, что предлагает jrockway. Просто напишите 'function3 :: a -> b' с' function3 x = SomeB' и используйте 'function3 (function2 xs)' в вашей первой функции. – tonio