これはHaskell Advent Calendar 2019 24日目の記事として書いたものです. code:Tree.hs {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE NPlusKPatterns #-} module Tree where import Data.Bool (bool) import Data.List (genericIndex, genericTake, findIndex, scanl') import Data.List.NonEmpty (NonEmpty(..)) import Numeric.Natural import Control.Comonad.Cofree (Cofree(.