LINUX.ORG.RU

История изменений

Исправление Crocodoom, (текущая версия) :

λ> let x = push 3 $ push 2 emptyQ 
λ> x == Queue [] (3 : 2 : [])
True
λ> toList x
[3,2]
λ> let y = snd. pop $ push 3 $ push 2 $ push 1 emptyQ
λ> y == Queue (2 : 3 : []) []
True
λ> toList y
[2,3]

Не совсем понимаю, что вы хотели показать своим примером...

Queue [] (3 : 2 : []) трансформируется в [3,2], а Queue (2 : 3 : []) [] в [2,3].

В полном соответствии с тем, как должен работать toList t, если следовать моему принципу (который вы пытаетесь оспорить)

Дерево конструкторов любого данных можно записать в строчку (и именно так мы и задаем их в хаскеле), и эту строчку можно прочитать слева направо .. toList должен выдавать в точности такой же порядок элементов

Исходная версия Crocodoom, :

λ> let x = push 3 $ push 2 emptyQ 
λ> x == Queue [] (3 : 2 : [])
True
λ> toList x
[3,2]
λ> let y = snd. pop $ push 3 $ push 2 $ push 1 emptyQ
λ> y == Queue (2 : 3 : []) []
True
λ> toList y
[2,3]

Не совсем понимаю, что вы хотели показать своим примером...

Queue [] (3 : 2 : []) трансформируется в [3,2], а Queue (2 : 3 : []) [] в [2,3].

В полном соответствии с тем, как должен работать toList t, если следовать моему объяснению

Дерево конструкторов любого данных можно записать в строчку (и именно так мы и задаем их в хаскеле), и эту строчку можно прочитать слева направо .. toList должен выдавать в точности такой же порядок элементов