annotate delta.hs @ 51:8d9c55bac8b2

Fix typo
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Wed, 19 Nov 2014 09:40:04 +0900
parents d654fdecdcd0
children 69a01cc80075
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17
279ebcf670c4 Define Similar as Applicative
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
1 import Control.Applicative
18
c77397d0677f Try define Similar as Monad
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
2 import Data.Numbers.Primes -- $ cabal install primes
c77397d0677f Try define Similar as Monad
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
3
44
6e270dfe2bb9 Define pretty-print for Delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
4 data Delta a = Delta [String] a [String] a
6e270dfe2bb9 Define pretty-print for Delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
5
6e270dfe2bb9 Define pretty-print for Delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
6 instance (Show a) => Show (Delta a) where
6e270dfe2bb9 Define pretty-print for Delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
7 show (Delta lx x ly y) = values ++ logs
6e270dfe2bb9 Define pretty-print for Delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
8 where
6e270dfe2bb9 Define pretty-print for Delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
9 values = "Delta {" ++ (show x) ++ "|" ++ (show y) ++ "}\n"
45
0c2d758406b1 Mini refactor
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
10 logs = concat . reverse $ zipWith formatter lx ly
0c2d758406b1 Mini refactor
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 44
diff changeset
11 formatter x y = " {" ++ x ++ (separator x y) ++ y ++ "}\n"
44
6e270dfe2bb9 Define pretty-print for Delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
12 separator x y = if (max (length x) (length y)) > 50 then "|\n " else "|"
17
279ebcf670c4 Define Similar as Applicative
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
13
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
14 value :: (Delta a) -> a
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
15 value (Delta _ x _ _) = x
21
af8754322ed4 Define Similar sample
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
16
47
1aefea69f71b Implement bubble sort by delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
17 deltaLeft :: (Delta a) -> a
1aefea69f71b Implement bubble sort by delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
18 deltaLeft (Delta _ x _ _) = x
1aefea69f71b Implement bubble sort by delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
19
1aefea69f71b Implement bubble sort by delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
20 deltaRight :: (Delta a) -> a
1aefea69f71b Implement bubble sort by delta
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
21 deltaRight (Delta _ _ _ y) = y
14
116131b196bb Define fmap and mu
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
22
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
23 instance (Eq a) => Eq (Delta a) where
19
003b6e58d815 Define Similar as Monad by mu
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 18
diff changeset
24 s == ss = (value s) == (value ss)
18
c77397d0677f Try define Similar as Monad
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
25
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
26 instance Functor Delta where
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
27 fmap f (Delta xs x ys y) = Delta xs (f x) ys (f y)
18
c77397d0677f Try define Similar as Monad
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
28
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
29 instance Applicative Delta where
49
d654fdecdcd0 Wrote bubble sort with modified calculate
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
30 pure f = Delta [] f [] f
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
31 (Delta lf f lg g) <*> (Delta lx x ly y) = Delta (lf ++ lx) (f x) (lg ++ ly) (g y)
20
d4aa70d94352 Define Similar as Applicative
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
32
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
33 mu :: Delta (Delta a) -> Delta a
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
34 mu (Delta lx (Delta llx x _ _) ly (Delta _ _ lly y)) = Delta (lx ++ llx) x (ly ++ lly) y
18
c77397d0677f Try define Similar as Monad
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
35
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
36 instance Monad Delta where
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
37 return x = Delta [] x [] x
22
f0400c4c953f Imporve Similar definition. delete "Single" constructor
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
38 s >>= f = mu $ fmap f s
18
c77397d0677f Try define Similar as Monad
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
39
c77397d0677f Try define Similar as Monad
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 17
diff changeset
40
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
41 returnS :: (Show s) => s -> Delta s
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
42 returnS x = Delta [(show x)] x [(show x)] x
0
7a82a5e50499 Initial commit. define to Functor for Similer
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
44 returnSS :: (Show s) => s -> s -> Delta s
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
45 returnSS x y = Delta [(show x)] x [(show y)] y
23
b4d3960af901 Define similar constructor for different element
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
46
16
4b315cf0edb9 Improve mu definition
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 15
diff changeset
47 -- samples
3
3c5fbce357af Define >>= for Similer
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
48
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
49 generator :: Int -> Delta [Int]
21
af8754322ed4 Define Similar sample
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
50 generator x = let intList = [1..x] in
22
f0400c4c953f Imporve Similar definition. delete "Single" constructor
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
51 returnS intList
6
5e367a167382 Define samples
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
52
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
53 primeFilter :: [Int] -> Delta [Int]
21
af8754322ed4 Define Similar sample
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
54 primeFilter xs = let primeList = filter isPrime xs
23
b4d3960af901 Define similar constructor for different element
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
55 refactorList = filter even xs in
b4d3960af901 Define similar constructor for different element
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
56 returnSS primeList refactorList
11
e8a5df54480e Define sample for Monad style
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
57
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
58 count :: [Int] -> Delta Int
21
af8754322ed4 Define Similar sample
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
59 count xs = let primeCount = length xs in
22
f0400c4c953f Imporve Similar definition. delete "Single" constructor
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
60 returnS primeCount
15
c599d2236d19 Similar as Monad
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
61
43
90b171e3a73e Rename to Delta from Similar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 23
diff changeset
62 primeCount :: Int -> Delta Int
21
af8754322ed4 Define Similar sample
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
63 primeCount x = generator x >>= primeFilter >>= count
46
cb5c190aa45d Define bubble sort
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 45
diff changeset
64
cb5c190aa45d Define bubble sort
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 45
diff changeset
65 bubbleSort :: [Int] -> Delta [Int]
48
820af7cc8485 Wrote >>= style bubble sort
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 47
diff changeset
66 bubbleSort [] = returnS []
49
d654fdecdcd0 Wrote bubble sort with modified calculate
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
67 bubbleSort xs = bubbleSort remainValue >>= (\xs -> returnSS (sortedValueL : xs)
d654fdecdcd0 Wrote bubble sort with modified calculate
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 48
diff changeset
68 (sortedValueR ++ xs))
46
cb5c190aa45d Define bubble sort
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 45
diff changeset
69 where
51
8d9c55bac8b2 Fix typo
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 49
diff changeset
70 maximumValue = maximum xs
8d9c55bac8b2 Fix typo
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 49
diff changeset
71 sortedValueL = maximumValue
8d9c55bac8b2 Fix typo
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 49
diff changeset
72 sortedValueR = replicate (length $ filter (== maximumValue) xs) maximumValue
8d9c55bac8b2 Fix typo
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents: 49
diff changeset
73 remainValue = filter (/= maximumValue) xs