Я пишу функцию для обработки оценки постфикса в F #. Это то, что у меня сейчас есть для функции оценки
//Postfix evaluation of string expr given variables bound to values as specified in vars
let (numSt:int list) = []
let rec innerEval (vars:(List<(string * int)>)) (stack: int list) (expr:string) =
//Head and Tail for stack, head and tail for expr
let chExpr = Seq.toList expr
match expr with
|[] -> stack.Head
|head::tail ->
if head = '+' then
let pushVal = stack.Head + stack.Tail.Head
let newStack = pushVal::stack.Tail
innerEval vars newStack tail
elif head = '-' then
let pushVal = stack.Head - stack.Tail.Head
let newStack = pushVal::stack.Tail
innerEval vars newStack tail
elif head = '/' then
let pushVal = stack.Head / stack.Tail.Head
let newStack = pushVal::stack.Tail
innerEval vars newStack tail
elif head = '*' then
let pushVal = stack.Head * stack.Tail.Head
let newStack = pushVal::stack.Tail
innerEval vars newStack tail
elif head = '$' then
let fstSt = stack.Head
let sndSt = stack.Tail.Head
let nhead = [fstSt; sndSt]
let st = nhead @ stack.Tail.Tail
innerEval vars st tail
elif head = '@' then
let nhead = tail.Head
let newVars = newVarList nhead vars stack.Head //helper function newVarList
innerEval newVars stack.Tail tail
//else it's a letter that needs to give back a number
else
let addNum = (getVal head vars) //get the number
let newStack = addNum::stack //push that onto stack
innerEval vars newStack expr //return to recursion on newStack
, которая, как я знаю, многословна, но когда я пытаюсь запустить этот код, я получаю сообщение об ошибке в коде, которое гласит:
pa4.fs(1194,38): error FS0001: This expression was expected to have type
'string'
but here has type
'char'
Таким образом, мой вопрос не обязательно о самом коде (если кто-то не может понять, что с ним не так), а о сообщении об ошибке: очевидно, это означает, что у меня есть элемент с неправильным типом, но что означает (1194, 38) ? Я предполагаю строку 38, но большее число увеличивается каждый раз, когда я запускаю код, и я не уверен, что это значит?
Извините, если это вопрос нуба, эта задача была дана практически без указания направления !