data Tree a = Leaf {leaf :: a} | Node {left :: Tree a} {right :: Tree a} deriving Show -- define data leaf1 = Leaf 1 tree1 = Node leftTree rightTree where leftTree = Leaf 1 rightTree = Node (Leaf 2) (Leaf 3) -- apply fields >leaf leaf1 Leaf {leaf = 1} >left tree1 Leaf {leaf = 1} >right tree1 Node {left = Leaf {leaf = 2}, right = Leaf {leaf = 3}} >left $ right tree1 Leaf {leaf = 2} >leaf $ left tree1 1
再帰構造をもつオブジェクトに対して、フィールドを再帰的に適用できました。