![]() ![]() ![]() ![]() |
![]() |
|
![]() |
||
![]() |
しかし、flipというものが出てくる。
Prelude> :m Data.Tree Prelude Data.Tree> let t = Node 1 [Node 2 [Node 3 [], Node 4 []], Node 5 []] Prelude Data.Tree> rootLabel $ flip (!!) 1 $ subForest $ flip (!!) 0 $ subForest t 4
ぬ、何だこれは?
調べると、引数の順番を入れ替えてくれるものらしい。
ほほう、これは便利。
でも、何故ここで登場?
Prelude Data.Tree> rootLabel $ (subForest $ subForest t !! 0) !! 1 4
で、良いのでは?と思ったけど、
Prelude Data.Tree> let getSubForestItem = \i n -> flip (!!) i $ subForest n Prelude Data.Tree> rootLabel $ getSubForestItem 1 $ getSubForestItem 0 t 4