In
val a = 1
val b = 2
Все, что вы сделали, это связали две переменные, соответствующие правилам dec ::= val ⟨var⟩(,) valbind
, dec ::= dec1 ⟨;⟩ dec2
, и на верхнем уровне, prog ::= dec
.
Затем в
a
b
Вы на самом деле пытаетесь применить a
к b
(exp ::= exp1 exp2 (application)
). Возможно, было бы проще увидеть его как эквивалентно написанное
a b
Однако a
не имеет типа функции, следовательно, ошибка operator is not a function
. Неясно, что вы на самом деле пытаетесь сделать с a
и b
.