packages feed

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

{-# LANGUAGE QuasiQuotes #-}

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

module T where

import Expr
import Data.SBV

-- Positive: nested pattern combined with a guard
t :: SExpr -> SInteger
t e = [sCase| e of
               Zero                -> 0
               Num k               -> k
               Var s               -> ite (s .== literal "a") 1 2
               Add (Num i) j | i .> 0 -> i + t j
               Add a b             -> t a + t b
               Let _   _a  b       -> t b
      |]