{-# LANGUAGE TemplateHaskell, TypeOperators #-}

module Data.Thorn.FoldExample (module Data.Thorn.FoldExample) where

import Data.Thorn

data x :$ y = Nil | (x,y) :* (x :$ y)

unfixdata [t|(:$)|]

insth = $(autoin [t|(:&$)|] [t|(:$)|])
outsth = $(autoout [t|(:&$)|] [t|(:$)|])
hylosth = $(autohylo [t|(:&$)|])
foldsth = $(autofold [t|(:&$)|] [t|(:$)|])
unfoldsth = $(autounfold [t|(:&$)|] [t|(:$)|])