-
[Haskell] #3 Tuple곡λΆ/ν¨μν νλ‘κ·Έλλ° 2020. 1. 12. 17:47
μλ νμΈμ, Lemon Kim μ λλ€! μ€λμ΄ 1μ₯μ λ§μ§λ§μ΄μμ! μΌμ.... λ²μ¨λΆν° νμμ μλ κ°λ μ΄ μκ³ μμν κ°λ μ΄ μΆκ°λκ³ μμ΄μ 머리μ κΉμ΄ λκ³ μμ΅λλ€.
μ΄μ νΈ (List)
2020/01/12 - [곡λΆ/ν¨μν νλ‘κ·Έλλ°] - [Haskell] #2 List(2) Range, list comprehension
μ€μ΅νκΈ° μ’μ μ¨λΌμΈ μ¬μ΄νΈ List
https://repl.it/languages/haskell
κ·ΈλΌ, λ°λ‘ μμν κ²μ :)
Tuple (νν)μ Listμλ λ€λ₯΄κ²,
1. μ ν΄μ§ κΈΈμ΄μ κ°μ λ³κ²½ν μ μλ
2. μλ‘ λ€λ₯Έ νμ λ μ μ₯ν μ μλ
μλ£νμ΄μμ.
λ€μ΄μλ μλ£ κ°―μμ λ°λΌμ 2κ°λ νμ΄(Pair), 3κ°λ νΈλ¦¬ν(Triple) μ΄λ κ² λΆλ₯΄κΈ°λ νλ€λ€μ. νμ΄μ κ²½μ°μλ§ λμνλ νΉμν ν¨μλ μμ΅λλ€. (fst, snd)
μ μνκΈ°
( 2, "hello" ) //μνλ λλ‘ κ΄νΈ μμ , λ‘ κ΅¬λΆν΄μ λ£μΌλ©΄ λ©λλ€.
(2, "γ γΉγ γΉ", 'a') //μλ‘ λ€λ₯Έ κ°μ΄ λ€μ΄ κ° μ μμ΅λλ€. μ¬λ¬ κ°μ κ°μ λ£μ μ μμ΄μ!리μ€νΈ λ΄μμμ νν
ννλ 리μ€νΈμ λ£μ μ μμ΅λλ€. λ€λ§! κ°―μμ νμ μ μμκ° μμ ν λμΌν΄μΌλ§ κ°μ ννλ‘ μ·¨κΈλ©λλ€!
[(1, "hi"), (2, "hello")] //OK!
[(1, "hello"), (2, "hi", 3)] // ERROR! μλ‘ κ°―μκ° λ€λ₯΄λ©΄ λ€λ₯Έ νμ μ΄ λμ΄, 리μ€νΈμ λ€μ΄κ°μ§ μμ΅λλ€.
[("hi", 1), (1, "hi")] //ERROR! κ°μ΄ κ°λλΌλ μμκ° λ€λ₯΄λ©΄ λ€λ₯Έ νμ μ΄ λ©λλ€.2κ°μ μμΈ κ²½μ°λ§ λμνλ ν¨μ
fst, snd
fst (2, "hello") //νν(2μμΈ κ²½μ°μλ§)μ 첫 λ²μ§Έ μμ λ°ν
2
snd (2, "hello") //νν(2μμΈ κ²½μ°μλ§)μ 2 λ²μ§Έ μμ λ°ν
"hello"
fst (2, "hello", 33) //ERROR!νν λ΄μ nλ²μ§Έ μμ κ° κ°μ Έμ€κΈ° ??
μ°Ύμλ΄€μ§λ§ νλ μμν¬ ν¨μλ μμμ΅λλ€ (...νΉμ μμΌλ©΄ λ§μν΄μ£ΌμΈμ γ .γ ) μ§μ νλ λ§λ€μ΄μ€μΌ ν΄μ.
κ·Έλ¦¬κ³ λκ°λ μμ κ°μκ° 3κ°λ₯Ό λμ΄κ°λ ν° ννμ μ°λ κ²μ κΆμ₯νμ§ μλ κ² κ°μμ΅λλ€.
ν¨ν΄ 맀μΉ? μ΄λΌλ λ°©λ²μΌλ‘ κΈν λΆμ λ μ μλ€κ³ νλ€μ
fst' (_, _, c) = c //tripleμμ μΈλ²μ§Έ μμ κ°μ Έμ€κΈ°
fst' (1,3,4)
4
μΆμ² : https://stackoverflow.com/questions/15558278/how-to-get-nth-element-from-a-10-tuple-in-haskell머리μμ κΉμ΄ λκΈ° μμνλκ΅°μ... νμ°... μ΄μ μμμΈλ° ν°μΌμ΄μμ...
zip μΌλ‘ νμ΄ (2κ° νν) 리μ€νΈ λ§λ€κΈ°
κ° λ¦¬μ€νΈμ κ°μ μμμ μμλ₯Ό λ½μ νμ΄λ₯Ό λ§λ€μ΄μ€λλ€.
zip 리μ€νΈ1 리μ€νΈ2
zip [1,3,5,5] ["hello", "he", "llo", "hi", "hi2"]
[(1,"hello"),(3,"he"),(5,"llo"),(5,"hi")] //ν μͺ½μ΄ λ κΈ΄ κ²½μ° μ§§μ 리μ€νΈμ κΈΈμ΄ λ§νΌλ§ μμ±λ©λλ€.list comprehensionμΌλ‘ νν λ§λ€κΈ°
list λ μ²λΌ, list comprehensionμ μ΄μ©ν΄μ ννλ€μ λ§λ€ μ μμ΄μ.
[ (x, y, z) | x <- [1..10] , y <- [1..10], z<-[1..10] , (x^2) + (y^2) == (z^2)]
[(3,4,5),(4,3,5),(6,8,10),(8,6,10)]
//ν λ³μ κΈΈμ΄κ° 10 μ΄νμΈ μ§κ° μΌκ°ν ꡬνκΈ°μ¬κΈ°κΉμ§κ° κ΅μ¬μ 1μ₯ λΆλΆμ΄μμ! κΈ΄ κΈ μ½μ΄μ£Όμ μ μ€λλ κ°μ¬ν©λλ€ :)
λ²μ¨λΆν° μ΄λ €μμ§κΈ° μμν©λλ€γ γ γ γ ν¨μλ₯Ό Nλ² λ°λ³΅νλ λ°©λ²λ±μ΄ μμ§μ μ± μ λ±μ₯νμ§ μμμ λ¨Όμ μ°Ύμλ³΄κ³ κ·Έλ¬κ³ μλλ°, νμ€ν κ°λ μ΄ μμν΄μ γ .γ μ΅μνμ§ μμ§λ§ μ΄λ κ² νλνλ μμκ°λ€ 보면 λκ° κΉ¨λ¬μμ μ»μ§ μμκΉ ν΄μ...
μ κ° μ΄ μ± μ λλΌ μ μμΌλ©΄ μ’κ² μ΅λλ€!! γ γ
'κ³΅λΆ > ν¨μν νλ‘κ·Έλλ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Haskell] #5 Type (2) (0) 2020.01.20 [Haskell] #4 Type (1) (0) 2020.01.19 [Haskell] #2 List(2) Range, list comprehension (0) 2020.01.12 [Haskell] #1 List (1) κΈ°λ³Έμ μΈ μ°μ°λ€ (0) 2020.01.11 [Haskell] #0 Hello, Haskell! (0) 2020.01.09