File: expr0.dhall

package info (click to toggle)
haskell-dhall 1.42.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 23,784 kB
  • sloc: haskell: 24,804; makefile: 3
file content (17 lines) | stat: -rw-r--r-- 513 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  λ(Expr : Type)
→ let ExprF =
        < LitF : Natural
        | AddF : { _1 : Expr, _2 : Expr }
        | MulF : { _1 : Expr, _2 : Expr }
        >

  in    λ(Fix : ExprF → Expr)
      → let Lit = λ(x : Natural) → Fix (ExprF.LitF x)

        let Add =
              λ(x : Expr) → λ(y : Expr) → Fix (ExprF.AddF { _1 = x, _2 = y })

        let Mul =
              λ(x : Expr) → λ(y : Expr) → Fix (ExprF.MulF { _1 = x, _2 = y })

        in  Add (Mul (Lit 3) (Lit 7)) (Add (Lit 1) (Lit 2))