我想用 SML 生成一个上下文无关语法样式的整数列表。
语法类似于S -> 1 S 2 | epsilon
.
这就是我尝试过的
fun gen(n: int) =
if n = 0 then []
else 1 :: gen(n - 1) :: 2
例如的预期结果gen(3)
应该是[1, 1, 1, 2, 2, 2]
。
但是,我收到了与类型有关的错误。
Error: operator and operand don't agree [literal]
operator domain: 'Z * 'Z list
operand: 'Z * int
in expression:
gen (n - 1) :: 2
那么我应该如何实现呢?在此先感谢您的帮助,我们将不胜感激!