diff options
| author | Jan Sucan <jan@jansucan.com> | 2023-03-11 17:31:29 +0100 |
|---|---|---|
| committer | Jan Sucan <jan@jansucan.com> | 2023-03-11 17:31:29 +0100 |
| commit | 010404abf1321443677efc91d21eb7f93c91a324 (patch) | |
| tree | fe371690d71f62d485bec8903991283b6e241f72 | |
| parent | bc92b3c77a9216e50b13bc5d210b39ec78fe4edc (diff) | |
3_b_6: Add solution
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | ch03/3_b_6.hs | 25 |
2 files changed, 26 insertions, 1 deletions
@@ -58,7 +58,7 @@ more visible in the list the first exercise of a group is in bold italics. | 3_b_3 | yes | | | | 3_b_4 | yes | | | | 3_b_5 | yes | | | -| 3_b_6 | | 70 | | +| 3_b_6 | yes | 70 | | | 3_b_7 | | | | | 3_b_8 | | | | | 3_b_9 | | | | diff --git a/ch03/3_b_6.hs b/ch03/3_b_6.hs new file mode 100644 index 0000000..74d46ac --- /dev/null +++ b/ch03/3_b_6.hs @@ -0,0 +1,25 @@ +-- Create a function that sorts a list of lists based on the length of each +-- sublist. (You may want to look at the sortBy function from the Data.List +-- module.) + +import Data.List + +myCompare :: [a] -> [a] -> Ordering +myCompare a b = if len_a < len_b + then LT + else if len_a == len_b + then EQ + else GT + where len_a = length a + len_b = length b + +mySort :: [[a]] -> [[a]] +mySort xs = Data.List.sortBy myCompare xs + +-- ghci> :l 3_b_6.hs +-- [1 of 1] Compiling Main ( 3_b_6.hs, interpreted ) +-- Ok, one module loaded. +-- ghci> mySort [] +-- [] +-- ghci> mySort [[2, 3], [7, 8, 9, 10], [1], [], [4, 5, 6]] +-- [[],[1],[2,3],[4,5,6],[7,8,9,10]] |
