packages feed

sbv-14.0: SBVTestSuite/TestSuite/CompileTests/SCase/SCase30.hs

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE QuasiQuotes       #-}
{-# LANGUAGE TemplateHaskell   #-}
{-# LANGUAGE TypeApplications  #-}

{-# OPTIONS_GHC -Wall -Werror -ddump-splices #-}

module T where

import Data.SBV

-- Testing constructor/type name conflct
data A = A Integer
       | B Float
       | C A A

mkSymbolic [''A]

t :: SA -> SA
t a = [sCase| a of
         A u     -> sA (u+1)
         B f     -> sB (f+2)
         C a1 a2 -> sC (t a1) (t a2)
      |]