Tak więc czytałem książkę "Wprowadzenie do formalnej teorii języka" i opisano język L(G) = {a^n ++ b^n | n > 0}
.Balanced Language, 2 symbole nieterminalne, zrozumienie listów
Posiada następujące produkcje:
S -> ab | aSb
I tak da następujący język:
a, ab, aabb, aaabbb, ...
Zastanawiałem się, jak mogę używać Haskell za listowych do stworzenia tego języka. Wiem, że potrafię spisywać zrozumienie za pomocą łańcuchów, ale jestem początkującym i nie byłem pewien, w jaki sposób mogę uzyskać nieskończoną listę, jaką bym chciał z tych łańcuchów.
Wyobrażam sobie coś takiego:
[ x ++ y | x <- ["a","aa",..] y <- ["b","bb",..]]
To nie robi dokładnie to, co myślisz, że jest. Co powiesz na '[replicate n 'a' ++ replicate n 'b' | n <- [1 ..]] '? To wydaje się najwierniejsze tłumaczenie ... – Alec
"a" nie jest częścią tego języka. –