linearscan-0.7.0: LinearScan/NonEmpty.hs
module LinearScan.NonEmpty where
import Debug.Trace (trace, traceShow)
import qualified Prelude
import qualified Data.IntMap
import qualified Data.IntSet
import qualified Data.List
import qualified Data.Ord
import qualified Data.Functor.Identity
import qualified Hask.Utils
coq_NonEmpty_rect :: (a1 -> a2) -> (a1 -> ([] a1) -> a2 -> a2) -> ([]
a1) -> a2
coq_NonEmpty_rect f f0 n =
(\ns nc l -> case l of [x] -> ns x; (x:xs) -> nc x xs)
(\y ->
f y)
(\y n0 ->
f0 y n0 (coq_NonEmpty_rect f f0 n0))
n
coq_NonEmpty_rec :: (a1 -> a2) -> (a1 -> ([] a1) -> a2 -> a2) -> ([]
a1) -> a2
coq_NonEmpty_rec =
coq_NonEmpty_rect
coq_NE_from_list :: a1 -> ([] a1) -> [] a1
coq_NE_from_list x xs =
case xs of {
[] -> (:[]) x;
(:) y ys -> (:) x (coq_NE_from_list y ys)}