summaryrefslogtreecommitdiff
path: root/src/Example.hs
blob: 89b2082732139673884a1a9105cc88b6365d0d96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{-# LANGUAGE DataKinds #-}
module Example where

import AST
import CHAD


bin :: SOp (TPair a b) c -> Ex env a -> Ex env b -> Ex env c
bin op a b = EOp ext op (EPair ext a b)

-- x y |- x * y + x
ex1 :: Ex [TScal TF32, TScal TF32] (TScal TF32)
ex1 =
  bin (OAdd STF32)
    (bin (OMul STF32)
      (EVar ext (STScal STF32) (IS IZ))
      (EVar ext (STScal STF32) IZ))
    (EVar ext (STScal STF32) (IS IZ))

-- -- x y |- let z = x + y in z * (z + x)
-- ex2 :: Ex [TScal TF32, TScal TF32] (TScal TF32)
-- ex2 = _