summaryrefslogtreecommitdiff
path: root/testsuite/runtime/eval/Test.gf
blob: 71a7dc2c27dc1b365d3e99357ef2eaab452301b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
abstract Test = {

fun f : Int -> Int -> Int ;

fun g : Int -> Int ;
def g 1 = 2 ;

fun g2 : Int -> Int -> Int ;
def g2 1 x = x ;

fun g0 : Int -> Int -> Int ;
def g0 = g2 ;

fun g3 : Int -> (Int -> Int) ;
def g3 3 = g ;

fun const : Int -> Int -> Int ;
def const x _ = x ;

cat Nat ;

data zero : Nat ;
     succ : Nat -> Nat ;
     err  : Nat ;

fun dec : Nat -> Nat ;
def dec zero     = zero ;
    dec (succ n) = n ;
    dec n        = err ; -- for fall through checking

fun plus : Nat -> Nat -> Nat ;
def plus err zero     = err ;
    plus m   err      = err ;
    plus m   zero     = m ;
    plus m   (succ n) = plus (succ m) n ;

fun dec2 : Int -> Nat -> Nat ;
def dec2 0 zero     = err ;
    dec2 _ (succ n) = n ;

}