-
[Haskell] #1 List (1) ๊ธฐ๋ณธ์ ์ธ ์ฐ์ฐ๋ค๊ณต๋ถ/ํจ์ํ ํ๋ก๊ทธ๋๋ฐ 2020. 1. 11. 23:45
Haskell์์, List(๋ฆฌ์คํธ)๋ ๊ฐ์ ํ์ ์ ์์ ์๋ ์งํฉ์ ๋๋ค. ๋ค๋ฅธ ํ์ ์ ๋ฃ์ผ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฉ๋๋ค.
Haskell์์๋ ๋ฌดํ ๋ฆฌ์คํธ๋ ์ ๊ณตํฉ๋๋ค. ๋ค๋ง, Haskell์ Lazy ํ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์, ์ ๋ง ํ์ํ ๋ ํ์ํ ๋ถ๋ถ๋ง ์ฐ์ฐํด์ ๋๋ ค์ค๋๋ค.
์ด ๋ถ๋ถ์ Range์์ ๋ค์ ๋ค๋ฃฐ๊ฒ์!
๋ฆฌ์คํธ ์ ์
'[' ']' ๋ก ๊ฐ์ธ๊ณ , ',' ๋ก ๊ฐ ์์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
[] // ๋น ๋ฆฌ์คํธ ์ ๋๋ค.
[1,3,4,5]
"Hello world"
['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'] // "Hello world" ์ ๊ฐ์ต๋๋ค. Haskell์์ String์ char์ ๋ฆฌ์คํธ ์ ๋๋ค.
//๋ฆฌ์คํธ ๋ด์๋ ๋ ๋ค๋ฅธ ๋ฆฌ์คํธ๊ฐ ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
["์๋ ", "Hello world", "Lemon kim ๐"]
[ [1, 3], [3, 4, 5]]
["์๋ ", 1] // ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค!๋ฆฌ์คํธ์์ ์์ ๊ฐ์ ธ์ค๊ธฐ
๋ฆฌ์คํธ !! ์์ ๋ฒํธ //์์ ๋ฒํธ๋ 0๋ฒ ๋ถํฐ ์์ํฉ๋๋ค.
[1,3,4] !! 0 // 1
"Hello world" !! 6 // 'w'์ด ์์๊ฐ ๋ฆฌ์คํธ์ ์ํ๋์ง ํ์ธํ๊ธฐ
ํ์ธํ ์์ `elem` ๋ฆฌ์คํธ // ์ค์ ํจ์๋ก ํธ์ถํ๋ ๋ฐฉ๋ฒ ( ํจ์๋ช ์ ๋ค๋ก ` (grave Accent, ์ต์ ๋ถํธ) ๋ฅผ ์ถ๊ฐํด์ฃผ์ธ์)
elem ํ์ธํ ์์ ๋ฆฌ์คํธ๋ฆฌ์คํธ ํฉ์น๊ธฐ
๋ค๋ก ๋ถ์ด๊ธฐ
๋ฆฌ์คํธ ++ ๋ค์ ๋ถ์ ๋ฆฌ์คํธ
"hello" ++ "hello"
"hellohello"์์ผ๋ก ๋ถ์ด๊ธฐ
์์ ๋ถ์ผ ๋ฆฌ์คํธ : ๋ฆฌ์คํธ
'H' : "ello world"
"Hello world"๋ฆฌ์คํธ์์ ์ผ๋ถ ์์ ๋ฆฌ์คํธ ๊ฐ์ ธ์ค๊ธฐ
๋ฌดํ ๋ฆฌ์คํธ์ ๊ฒฝ์ฐ ๊ฐ์ ธ์ฌ ์์๋ฅผ ์ ํํ๋๋ฐ๋ ์ฌ์ฉํฉ๋๋ค.
take
take ์์์๋ถํฐ ๊ฐ์ ธ์ฌ ์์ ๊ฐ์ ๋ฆฌ์คํธ
์์์ ๊ฐฏ์๋ณด๋ค ๋ ๋ง์ด ๊ฐ์ ธ์ค๋ ค ์๋ํ๋ฉด ๊ทธ๋ฅ ๊ทธ ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.
take 3 [1,2,3,4,5] // [1,2,3]
take 6 [1,2,3,4,5] // [1,2,3,4,5]drop
drop ์์์๋ถํฐ ๋ฒ๋ฆด ์์ ๊ฐฏ์ ๋ฆฌ์คํธ
์์์ ๊ฐฏ์๋ณด๋ค ๋ ๋ง์ด ๋ฒ๋ฆฌ๋ ค ํ๋ฉด ๋น ๋ฆฌ์คํธ ([])๋ฅผ ๋ฐํํฉ๋๋ค.
drop 3 [1,2,3,4,5] // [3,4,5]
drop 6 [1,2,3,4,5] // []๋งจ ์, ๋งจ ๋ค ์์ ๊ด๋ จ ํจ์๋ค
๋ฆฌ์คํธ๊ฐ ๋น์ด์๋ค๋ฉด ( [] ) ๋์ํ์ง ์์ต๋๋ค.
head ๋ฆฌ์คํธ // 0๋ฒ์งธ ์์
last ๋ฆฌ์คํธ // ๋ง์ง๋ง ์์
init ๋ฆฌ์คํธ // ๋ง์ง๋ง ์์๋ง ๋นผ๊ณ ๋ชจ๋ ์์
tail ๋ฆฌ์คํธ // 0๋ฒ์งธ ์์๋ง ๋นผ๊ณ ๋ชจ๋ ์์head [1,3,4,5]
1
tail [1,3,4,5] // 0๋ฒ์งธ ์์๋ง ๋นผ๊ณ ๋ชจ๋ ์์
[3,4,5]
init [1,3,4,5] // ๋ง์ง๋ง ์์๋ง ๋นผ๊ณ ๋ชจ๋ ์์
[1,3,4]
last [1,3,4,5]
5๋ฆฌ์คํธ ๊ธธ์ด ๊ด๋ จ ํจ์๋ค
๋ฆฌ์คํธ ๊ธธ์ด ๋ฐํ
length ๋ฆฌ์คํธ
length [5,4,3,2,1]
5๋ฆฌ์คํธ๊ฐ ๋น์๋์ง ํ์ธ
null ๋ฆฌ์คํธ
null []
Truenull [1,3,4,5]
False
๋ฆฌ์คํธ ๋ค์ง๊ธฐ
๋ฆฌ์คํธ์ ์์๋ฅผ ๋ค์ง์ต๋๋ค
reverse ๋ฆฌ์คํธ
reverse [5,4,3,2,1]
[1,2,3,4,5]๋ฆฌ์คํธ ๋ด ์ต๊ณ /์ต์๊ฐ ์ฐพ๊ธฐ
์ต๊ณ ๊ฐ
maximum ๋ฆฌ์คํธ
maximum [1,9,2,3,4]
9์ต์๊ฐ
minimum ๋ฆฌ์คํธ
minimum [8,4,2,1,5,6]
1
๋ฆฌ์คํธ ๋ด ๋ชจ๋ ๊ฐ ๊ณ์ฐ๋ชจ๋ ๊ฐ ๋ํ๊ธฐ
sum ๋ฆฌ์คํธ
sum [5,2,1,6,3,2,5,7]
31๋ชจ๋ ๊ฐ ๊ณฑํ๊ธฐ
product ๋ฆฌ์คํธ
product [6,2,1,2]
24๋ฆฌ์คํธ ๋น๊ตํ๊ธฐ
๋ฆฌ์คํธ1 [<, <=, >=, > , ==(equal), /= (not equal) ] ๋ฆฌ์คํธ2
๋น๊ต ์์๋ ๊ฐ ๋ฆฌ์คํธ์ ๊ฐ์ ์์์ ์์๋ฅผ ๊ฐ์ ธ์ ๋น๊ต ํฉ๋๋ค.
๋ฆฌ์คํธ์ ๋ด์ฉ์ด ๊ฐ๊ณ ๋ฆฌ์คํธ์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ค๋ฉด, ์งง์ ๋ฆฌ์คํธ ์ชฝ์ด ์์ ๊ฒ์ผ๋ก ์ธ์ํฉ๋๋ค.
// < , <=
[1,3,4,5] < [1, 3, 4, 6]
True
[1,3,4,6] < [1, 3, 4, 6]
False
//๋น๊ต ํ ๋๋ ์์์๋ถํฐ ์์๋๋ก, ๊ฐ์ ์๋ฆฌ์ ์์๋ฅผ ๊ฐ์ ธ์ ๋น๊ตํด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํฉ๋๋ค.
//0๋ฒ์งธ ์์๋ฅผ ๋น๊ตํด๋ณด๋ 3, 1์ด ๋์์ต๋๋ค. ๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ ๋ฆฌ์คํธ๊ฐ ๋ ํฌ๋ค๊ณ ๋์ค๋ค์.
[3,1,4,5] > [1, 3, 4,5]
True
//๋น๊ตํ๋ ๋ฆฌ์คํธ์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ค๋ฉด, ์งง์ ๋ฆฌ์คํธ ์ชฝ์ด ์์ ๊ฒ์ผ๋ก ํ์ ๋ฉ๋๋ค.
[1,2,3,4] < [1,2,3,4,-1]
True
[1,3,4,6] <= [1, 3, 4, 6]
True
[1,3,4,5] <= [1, 3, 4, 6]
True
// > , >=
[1,3, 5,4] > [1, 3, 4,5]
True
[1,3, 5,4] >= [1, 3, 4,5]
True
[1,3, 4,5] >= [1, 3, 4,5]
True
// ==
[1,3,4,5] == [1, 3, 4,5]
True
// /= (not Equal)
[1,3,4,5] /= [1, 3, 4,5]
False
[1,3,5,4] /= [1, 3, 4,5]
True
//๋ฆฌ์คํธ์ ๋ด์ฉ์ด ๊ฐ๋๋ผ๋ ์์๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅด๊ฒ ์ธ์ ํฉ๋๋ค.
[3,1,4,5] == [1, 3, 4,5]
False์ค์... ์๊ฐ๋ณด๋ค ์์ด ๋ง๋ค์ ๐ ๋ค์ ๊ธ์์๋ ๋ฆฌ์คํธ์์ ๋ฒ์ ์ฐ์ฐ์ ์ฌ์ฉํ ๋ ์ธ Range์ ๋ํด์ ๋ค๋ฃจ์ด๋ณด๋๋ก ํ ๊ฒ์!
'๊ณต๋ถ > ํจ์ํ ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Haskell] #5 Type (2) (0) 2020.01.20 [Haskell] #4 Type (1) (0) 2020.01.19 [Haskell] #3 Tuple (0) 2020.01.12 [Haskell] #2 List(2) Range, list comprehension (0) 2020.01.12 [Haskell] #0 Hello, Haskell! (0) 2020.01.09