我是haskell的新手,想了解一些關于如何創建一個函式的想法,該函式將獲取多串列串列的每個頭元素并將其添加到一個新的多串列中,然后轉到第二列等等。到目前為止,我只知道如何為第一列撰寫一個函式:inverted (xss) = map head xss如何讓它一直運行到它對多串列的每一列都執行此操作?
uj5u.com熱心網友回復:
我們可以直接撰寫此函式,并且您已經有了完全正確的想法。首先獲取正面,然后進行遞回呼叫。
假設所有串列的長度相同,
inverted :: [[a]] -> [[a]]
inverted [] = [] -- Degenerate case
inverted xss
| null (head xss) = []
| otherwise = map head xss : inverted (map tail xss)
碰巧的是,這個函式已經在標準庫中:它被呼叫Data.List.transpose并且它完全按照你想要的方式運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477441.html
標籤:哈斯克尔
