728x90
Comparing lists
하스켈 리스트는 값이고, 값으로 비교가능하다. 아래를 보자.
1 2 3 4 5 6 7 8 9 10 | Prelude> [3,4] == [1+2,2*2] True Prelude> [3] ++ [] ++ [4] == [3,4] True Prelude> tail (tail [3,4,5,6]) == [last [4,5]] ++ [6] True | cs |
리스트의 비교는 사전 편찬상의 순서를 따른다. 대응되는 원소간의 비교는 서로 다른 것이 나타날 때까지 계속되고, 서로 다른 원소를 비교결과가 그 리스트의 비교 결과가 된다.
1 2 3 | Prelude> [1,2,3] < [1,2,4] True | cs |
위의 경우 첫 2개의 원소는 동일함으로 3과 4를 비교하게 되고, 그 결과 4가 더 크므로 True 가 된다. 예제를 좀 더 살펴보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 | Prelude> [1,2,3] < [1,2,4] True Prelude> [1,2,3] < [1,1,1,1] False Prelude> [1,2,3] > [1,2] True Prelude> [1..] < [1,3..] --- 무한 리스트 비교 True | cs |
Lists of Lists
리스트를 원소를 갖는 리스트도 만들 수 있다.
1 2 3 4 5 6 7 8 | Prelude> let x = [[1], [2,3,4], [5,6]] x :: Num t => [[t]] Prelude> length x 3 it :: Int | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Prelude> let x = [[1],[2,3,4],[5,6]] x :: Num t => [[t]] Prelude> head x [1] it :: Num t => [t] Prelude> tail x [[2,3,4],[5,6]] it :: Num t => [[t]] Prelude> x !! 1 !! 2 4 it :: Num a => a | cs |
728x90
'프로그래밍 Programming' 카테고리의 다른 글
Functional Programming with Haskell - "cons" lists (0) | 2018.04.20 |
---|---|
Functional Programming with Haskell - Strings are [Char] (0) | 2018.04.19 |
Functional Programming with Haskell - Lists basics (0) | 2018.04.17 |
Functional Programming with Haskell - Recursion (0) | 2018.04.17 |
Functional Programming with Haskell - Haskell's if-else (0) | 2018.04.16 |