我有這兩個列表[@,a,@,b,c,@,@,@,(de),@,@,@,f,g,@,h]
和["","","+","","","?","|","","","","","*","","","|",""]
我想用scanl or map
函數來覆蓋第二個列表,並且在第一個列表中提取前面的元素。 2個列表具有不同類型的元素。haskell中的一個元素的索引
例如我想如果在第二列表中的元件是/= ""
然後在第一列表中(例如,用於爲+
獲得a
,對於? -> c
,*->(de)
|->g
)提取元件後面。
我想是這樣的
map(\x-> if x /= "" then l2 !! (((elemIndices x l1)!!0)-1) else Epsilon)l1
其中l1 is ["","","+","","","?","|","","","","","*","","","|",""]
和l2 is [@,a,@,b,c,@,@,@,(de),@,@,@,f,g,@,h]
但它簡化版,工作,也@ = Epsilon
,它是從data Reg = Epsilon | Literal Char | Or Reg Reg | Then Reg Reg | Star Reg deriving Eq
。
有人可以幫助我嗎?
一個(未使用)值添加到第一列表的開始,然後用zipWith – Arjan 2013-04-23 20:37:26
你想要什麼當第二個列表中的元素是''「'時發生?當第二個列表的第一個元素不是'「」'時,你想要發生什麼?當你給出的兩個清單是輸入時,結果應該是什麼? (我認爲這是一個清單,但向我們顯示清單。) – dave4420 2013-04-23 20:42:32
P.S.你的第一個列表不是有效的Haskell列表。如果你不構成對Haskell的擴展,我們會更容易幫助你。 – dave4420 2013-04-23 20:44:05