Haskell генерирует бесконечный поток на основе грамматики - PullRequest
0 голосов
/ 26 октября 2018

Предположим, у нас есть следующая грамматика:

# x = INT | (#x + #x)
INT = 0 | 1

Предположим, теперь я хотел бы создать бесконечный поток, который "содержит" все возможные формы #x.

Вот что я могу придумать:

atomic :: [String]
atomic = ["0", "1"]
--------------------
plus :: String -> String -> String
plus x1 x2 = "(" ++ x1 ++ "+" ++ x2 ++ ")"
--------------------
makeInfiniteStream :: [String]
makeInfiniteStream = atomic : --something

Я не совсем уверен, что происходит на другой стороне толстой кишки. Я предполагаю, что это должно включать вызов функции, но я пока не вижу этого.

Спасибо.

...