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
では、どのように実装すればよいでしょうか。事前に感謝します。どんな助けでも大歓迎です!