你好人的StackOverflow!concatMap解釋
我已經開始與Haskell合作了,並且偶然發現了concatMap
函數。 因爲我很新的這門語言,我有一些問題的理解下面的代碼(source):
concatMap f = cmap where
cmap [] = []
cmap (x : xs) = accum (f x) where
accum [] = cmap xs
accum (y : ys) = y : accum ys
據我瞭解功能concatMap
發生在一個參數f
這是一個功能。
但是我們如何設置一個函數等於另一個?我們是否將f
的結果設置爲cmap
,或者我們是否使用cmap
作爲f
的參數?
任何幫助將不勝感激,
預先感謝您!
這段代碼是寫成point-free-ish的,這對初學者不是很友好。在'='的兩邊添加'ys',它可能會變得更容易,例如'concatMap f ys = cmap ys'。此外,'concatMap f'的規範定義是'concat。地圖f'。 – Zeta
我可能會進一步說,代碼很混亂。我沒有看到有什麼好的理由來編寫奇怪的'accum'函數,而不是使用'cmap(x:xs)= f x ++ cmap xs'。 – dfeuer