我有一個源代碼如下。我不明白它的語法。 [g | t <- ts; g <- symbols t]
很奇怪。請幫我解釋一下,或者推薦任何與之相關的書籍或文件。非常感謝如何訪問Ocaml上的列表中的成員
type term = V of string | F of string * term list
let rec symbols = function
| V x -> [x]
| F (f, ts) -> f :: [ g | t <- ts; g <- symbols t ]
let rec functions = function
| V _ -> []
| F (f, ts) -> f :: [ g | t <- ts; g <- functions t ]
https://en.wikipedia.org/wiki/List_comprehension – Kakadu 2015-03-03 11:21:19