リストの先頭と末尾に2つのビューを持たせることができるリストデータ構造を効率的に実装するにはどうしたらいいですか? すなわち:Haskellの効率的なキュー
start x = []
end x = reverse start -- []
start1 = [1,2,3] ++ start
end start1 -- [3,2,1]
最後は「逆」を呼び出す単に自動的に逆にされたリストの観点から、指定されたリストを見ずにこれを行うことができるはずです。連結から新しいリストを作成して開始する場合も同様です。
ハスケルでは値を変更できません。 'start'は常に空リストになり、' end'は常にその 'reverse'(空のリスト)になります。あなたが州を維持したいなら、あなたは州のモナドを見るべきです。 –
修正:更新によって私は再バインドを意味する。 – TheOne
@Absolute:あなたはそれをHaskellで変更することはできない究極の真実を変えないと言います(IOにもかかわらず)。あなたは物事を再結合することはできません。 –