    ------------------------------------------------------------------------
    -- The Agda standard library
    --
    -- 1 dimensional pretty printing of binary trees
    ------------------------------------------------------------------------

    {-# OPTIONS --cubical-compatible --sized-types #-}

    open import Level using (Level)
    open import Data.List.Base as List using (List; []; [_]; _∷_; _∷ʳ_)
    open import Data.String.Base using (String)
    import Data.Tree.Rose as Rose
    import Data.Tree.Rose.Show as Rose
    open import Data.Tree.Binary using (Tree; map)
    open import Function.Base using (_∘′_; id)

    module Data.Tree.Binary.Show where

    private
      variable
        a : Level
        N L : Set a

    display : Tree (List String) (List String) → List String
    display = Rose.display ∘′ Rose.fromBinary id id

    show : (N → List String) → (L → List String) → Tree N L → List String
    show nodeStr leafStr = display ∘′ map nodeStr leafStr

    showSimple : (N → String) → (L → String) → Tree N L → List String
    showSimple nodeStr leafStr = show ([_] ∘′ nodeStr) ([_] ∘′ leafStr)