Sml 关于根据上下文无关语法生成值列表(例如[1,1,1,2,2,2])
我想用SML生成一个上下文无关的语法样式的整数列表 语法类似于Sml 关于根据上下文无关语法生成值列表(例如[1,1,1,2,2,2]),sml,context-free-grammar,Sml,Context Free Grammar,我想用SML生成一个上下文无关的语法样式的整数列表 语法类似于S->1s2 | epsilon 这就是我试过的 fun gen(n: int) = if n = 0 then [] else 1 :: gen(n - 1) :: 2 例如,gen(3)的预期结果应该是[1,1,1,2,2] 但是,我得到了与类型相关的错误 Error: operator and operand don't agree [literal] operator domain: 'Z * 'Z l
S->1s2 | epsilon
这就是我试过的
fun gen(n: int) =
if n = 0 then []
else 1 :: gen(n - 1) :: 2
例如,gen(3)
的预期结果应该是[1,1,1,2,2]
但是,我得到了与类型相关的错误
Error: operator and operand don't agree [literal]
operator domain: 'Z * 'Z list
operand: 'Z * int
in expression:
gen (n - 1) :: 2
那么我应该如何实现它呢?提前感谢您,我们非常感谢您的帮助 我明白了,我应该这么做
fun gen(n: int) =
if n = 0 then []
else 1 :: gen(n - 1) @ [2]
或者,使用模式匹配:
fun gen 0 = []
| gen n = 1 :: gen (n-1) @ [2]