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"
|