summaryrefslogtreecommitdiffstats
path: root/AufgabeFFP6.hs
blob: 2e0a021668f7d8dec102f0f570c2199711393a14 (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
42
43
44
45
46
47
48
{-# LANGUAGE FlexibleInstances #-}

module AufgabeFFP6
where

import Data.Array

(+) :: Int -> Int -> Int
(+) = (Prelude.+)

(-) :: Int -> Int -> Int
(-) = (Prelude.-)

(*) :: Int -> Int -> Int
(*) = (Prelude.*)

(./.) :: Int -> Int -> Int
(./.) = div

myfoldl :: [(a -> b -> a)] -> a -> [b] -> a
myfoldl _ z [] = z
myfoldl (f:fs) z (x:xs)  = myfoldl fs (f z x) xs

myfoldl' :: [(a -> a -> a)] -> [a] -> a
myfoldl' f (x:xs) = myfoldl f x xs

eval ::  Array Int Int -> Array Int (Int -> Int -> Int) -> Int
eval a b = myfoldl' (elems b) (elems a)

--------------------------------------------------------------------------------

-- yield :: Array Int Int -> Int -> [Array Int (Int -> Int -> Int)]
-- yield = yield_bt
-- yield = yield_gtf

-- yield_bt :: Array Int Int -> Int -> [Array Int (Int -> Int -> Int)]
-- yield_gtf :: Array Int Int -> Int -> [Array Int (Int -> Int -> Int)]

--------------------------------------------------------------------------------


instance Show (Int -> Int -> Int) where
  show op = case (3 `op` 3) of
    6 ->  "plus"
    0 ->  "minus"
    9 ->  "times"
    1 ->  "div"
    _ ->  "unknown"