Mercurial > hg > Members > atton > delta_monad
annotate haskell/Example/Delta.hs @ 134:3f48bd08865f
Rename and split with module for haskell codes
author | Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 06 Feb 2015 16:28:54 +0900 |
parents | |
children | bb0b2fb49a93 |
rev | line source |
---|---|
134
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 module Example.Delta where |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 import Data.Numbers.Primes |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 import Delta |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 -- samples |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 generator :: Int -> Delta [Int] |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 generator x = let intList = [1..x] in |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 return intList |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 primeFilter :: [Int] -> Delta [Int] |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 primeFilter xs = let primeList = filter isPrime xs |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 refactorList = filter even xs in |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 deltaFromList [ primeList, refactorList] |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 count :: [Int] -> Delta Int |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 count xs = let primeCount = length xs in |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 return primeCount |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 primeCount :: Int -> Delta Int |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 primeCount x = generator x >>= primeFilter >>= count |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 bubbleSort :: [Int] -> Delta [Int] |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 bubbleSort [] = return [] |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 bubbleSort xs = bubbleSort remainValue >>= (\xs -> deltaFromList [ (sortedValueL : xs), |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 (sortedValueR ++ xs)] ) |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 where |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 maximumValue = maximum xs |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 sortedValueL = maximumValue |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 sortedValueR = replicate (length $ filter (== maximumValue) xs) maximumValue |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 remainValue = filter (/= maximumValue) xs |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33 |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 |
3f48bd08865f
Rename and split with module for haskell codes
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 |